- 声明抽象类与抽象方法
使用关键字abstract声明的类称为抽象类,使用abstract声明的成员方法称为抽象方法。
包含抽象方法的类必须被声明为抽象类。构造方法、非抽象类的成员方法不能被声明为抽象方法。 - 抽象类不能被实例化
即使抽象类中没有包含抽象方法,也不能创建抽象类的实例。 - 抽象类与抽象方法的作用
**抽象类用于描述抽象的概念。**抽象方法用于声明方法的参数和返回值,抽象方法的具体实现由抽象类的子类完成,子类必须实现父类的所有抽象方法,否则该子类仍然为一个抽象类,不能生成该子类的对象。
抽象类声明的抽象方法约定了多个子类共用的方法声明,每个子类可以根据自身的实际情况,给出抽象方法的具体实现,显然子类可以有不同的方法实现。因此,一个抽象方法在多个子类中表现出多态性。抽象类提供了方法声明与方法实现相分离的机制,使得多个不同的子类能够表现出不同的行为能力。 - 抽象方法必须被子类覆盖
由于抽象方法在抽象类中没有具体的方法实现,所以抽象方法必须被子类实现。如果一个子类不能实现父类的抽象方法,则该类自己也必须声明为抽象类。
abstract class Abstract{
abstract void abstractMethod();
void concreteMethod(){
System.out.println("具体方法");
}
}
class Concrete extends Abstract {
void abstractMethod(){
System.out.println("abstractMethod被重写");
}
}
class Test {
public static void main(String[] args){
Concrete concrete = new Concrete();
concrete.abstractMethod();
concrete.concreteMethod();
}
}
定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。