abstract意为“抽象的”,Java中使用abstract关键字来声明类或者方法,分别得到抽象类和抽象方法。下面对抽象类的性质进行探索。
1. abstract方法
通过abstract声明的方法为抽象方法,在声明的类中不需要实现。
public abstract String getDescription();
// no implementation
2. abstract类
包含抽象方法的类必须被声明为抽象类,但抽象类还可以包含成员变量和具体方法。如下:
public abstract class Person{
private String name;
public Person(String name){
this.name = name;
}
public abstract String getDescription();
public String getName(){
return name;
}
}
不包含抽象方法的类也可以声明为抽象类,但这样意义不大。
抽象类不能被实例化。但可以定义一个抽象类的引用变量,用它引用该抽象类的非抽象子类的对象。
抽象类和普通类的主要有三点区别:
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。