抽象类
在Java中抽象类有以下规定:
(1)抽象类不能被实例化,只有抽象类的非抽象子类才可以被实例化。
(2)抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类。
(3)抽象类中的抽象方法只是声明,不包含方法体。
(4)构造方法和类方法(用static修饰的方法)不能声明为抽象方法。
(5)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
定义抽象类时,需要使用abstract关键字,定义抽象类的语法如下:
[权限修饰符] abstract class 类名 {
//类体
}
抽象方法
如果一个类中的方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法。定义抽象方法时,同样需要使用abstract关键字,定义抽象方法的语法如下:
[权限修饰符] abstract 返回值类型 方法名(参数列表);
在Java中抽象方法有以下规定:
(1)抽象方法后面直接跟一个分号,而不是花括号。
(2)抽象方法的修饰符必须为public或protected(如果为private,则不能被子类继承),默认情况下为public。
(3)任何子类必须重写父类的抽象方法,或者声明该子类为抽象类。