面向对象进阶:抽象类、接口、静态字段和方法
面向对象进阶:抽象类、接口、静态字段和方法
抽象类
为什么有抽象类?
当父类的某些方法,需要声明,但又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。(抽象类包含:具体的方法+抽象的方法(可以没有))
例如:
如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去覆写它,那么,可以把父类的方法声明为抽象方法:
class Person {
public abstract void run();
}
把一个方法声明为abstract,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的,所以,Person类也无法被实例化。编译器会告诉我们,无法编译Person类,因为它包含抽象方法。
必须把Person类本身也声明为abstract,才能正确编译它:
abstract class Person {
public abstract void run();
}
抽象类的介绍
抽象:不具体的,不能使用的
抽象类的使用注意
1)抽象类不能被实例化[举例];
2)抽象类不一 定要包含abstract方法。 也就是说,抽象类可以没有abstract方法[举例];
3)一旦类包含了abstract方法,则这个类必须声明为abstract [说明];
4) abstract只能修饰类和方法,不能修饰属性和其它的。[说明]
5)抽象类本质还是类,不能一种不能被实例化,只能被继承的类。所以类里面有的属性、构造器、非抽象方法等,抽象类都有
总之:抽象类在内容上允许有抽象方法的添加;在使用上,不能想 类一样被实例化
public classAbstractDetail01 {
public static void main(String[] args) {
//抽象类,不能被实例化
//newA();
}
}
//抽象类不一定要包含 abstract 方法。也就是说,抽象类可以没有 abstract 方法
//,还可以有实现的方法。
abstract classA