1.抽象方法和抽象类
抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,但是抽象类里可以没有抽象方法。
抽象方法和抽象类的具体规则如下:
- 抽象类必须使用abstract修饰符来修饰,抽象方法也 必须使用abstract修饰符来修饰,抽象方法不能有方法体
- 抽象类不能被实例化,无法使用 new关键字来调用抽象类的构造方法创建抽象类的实例。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例
- 抽象类可以包含成员变量、方法、构造方法、初始化代码块、内部类(接口、枚举)5种成分。抽象类的构造方法不能用于创建实例,主要是用于被其子类调用
- 含有抽象方法的类只能被定义成抽象类
注意
- 当使用abstract修饰类时,表名这个类只能被继承
- 当使用abstract修饰方法时,表明这个方法必须由子类重写。所以final和abstract不能同时使用。private和abstract也不能同时修饰方法。
- abstract不能用于修饰成员变量,不能用于修饰局部变量。
2.抽象类的作用
抽象类不能创建实例,只能当成父类来被继承。这体现了一种模板模式的设计,抽象类作为子类的通用模板,子类在抽行类的基础上进行扩展、改造,但子类总会大致保留抽象类的行为方式。