1.概念
- Java中被
abstract
修饰的方法叫做抽象方法,被 abstract
修饰的类叫做抽象类
2.抽象类及抽象方法的格式
abstract class Teacher{
public abstract void teach();
}
3.特点
abstract
可以修饰方法或者类- 抽象方法只有方法声明,没有方法体
- 如果一个类中含有抽象方法,那么这个类一定要被声明为抽象类
- 抽象类中可以没有抽象方法
- 如果一个子类继承了一个抽象父类,有两种方案:
- 作为抽象子类,不实现抽象父类的抽象方法,声明为
abstract
- 作为普通子类,重写抽象父类的所有抽象方法
- 抽象类不可以被实例化(不能创建对象)
- 抽象类有构造函数,只是构造函数不是为了自己创建对象时使用,而是为了子类创建对象时使用,(默认存在子类构造第一行调用
super();
)
4.抽象类中的成员测试
- 抽象类中既可以有普通成员变量,也可以有成员常量
- 抽象类中的方法没有限制(可以全是抽象方法,全是普通方法,或者有普通有抽象)
5.为什么一个类没有抽象方法还要被声明为抽象类?
- 因为抽象类不能被实例化,所以,如果不想让外界创建本类对象的实例,就可以将普通类声明为抽象类
6.abstract的注意事项
- 抽象方法要求子类继承后必须重写
abstract
和下列关键字一起使用会没有意义
- 1.
private
:被私有化后,子类无法重写,与abstract相违背。 - 2.
static
:静态优先于对象存在,存在加载顺序问题。 - 3.
final
:被final修饰后,无法重写,与abstract相违背。