通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
程序见证一切:
1)抽象类
public abstract class Abstract//定义一个抽象类
{
public abstract void printName();//只有抽象类才有权利拥有抽象方法;
public abstract int getArea();
public void printAge()//抽象类也可以拥有具体的方法;
{
System.out.println(23);
}
}
2)子类,继承于抽象类
public class AbstractTest extends Abstract
{
int width ;
int height ;
public AbstractTest(int width,int height)//自定义构造方法,含两个整型的参数
{
this.width = width;//第一个width是参数,第二个是成员变量;
this.height = height;
}
public void printName()//继承了抽象类的类,它必须实现抽象类的抽象方法;具体方法可以不实现;
{
System.out.println("继承后的抽象方法");
}
public int getArea()
{
int area = width*height;
return area ;
}
public static void main(String[] args)
{
//Abstract a = new Abstract(); 不允许的操作,因为抽象类如果重写抽象方法的话,那么该抽象类无法被实例化;Cannot instantiate the type Abstract
/*
* 修改了原抽象类的抽象方法为不抽象,可以被实例化;
*/
Abstract a = new Abstract()
{
public void printName()
{
System.out.println("已经不是抽象方法了");
}
public int getArea()
{
return 0;
}
};
a.printAge();
/*
* 它的子类可以实例化;
*/
AbstractTest at = new AbstractTest(4,5);
at.printName();
System.out.println(at.getArea());
}
}
程序输出的结果:
23
继承后的抽象方法
20