基础知识
- 抽象方法:没有方法体的方法
- 抽象类:包含抽象方法的类
抽象类通常都是用来表征对问题领域进行分析、设计中得出的抽象概念,是对大多数看上去不同,可是本质上却是相同的具体概念的抽象。构造出一个固定的一组行为的抽象描述,可是这组行为却又可以有任意个可能的具体实现方式,这个抽象描述就是我们所说的抽象类。
子类重写父类中的方法,且子类对父类方法的实现各不相同。
使用abstract关键字修饰的方法就是抽象方法。
抽象方法只包含一个方法名,没有方法体。
如果一个类包含抽象方法,该类必须是抽象类。
例如:
public abstract class Person {
public abstract void say();
}
注意事项:
1.继承抽象类的子类必须重写父类所有的抽象方法。否则该子类也必须声明为抽象类。
2.抽象类不能创建对象。只能创建其非抽象子类的对象。(抽象方法没有方法体,没有意义。)
3.抽象类中可以有构造方法,是供子类创建对象时,初始化父类成员用的。(子类构造方法中有默认的super(),需要访问父类构造方法。)
4.抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类。
抽象类的作用
1.方法可以复用而接口不能。大多情况下,我们用到的方法的父类都是一个抽象类而不是接口,,因为方法可以复用。如果接口,就需要写很多重复代码,且不易修改。
2.抽象类可以默认实现某些方法,就不需要对一些方法重复实现相同的功能。抽象类的目的在于,你可以更细致化的表明哪些是相同的,哪些是不同的。
3.在面向对象的方法中,抽象类主要用来进行类型隐藏。
构造出一个固定的一组行为的抽象描述,可是这组行为却可以有任意个可能的具体实现方式,这个抽象描述就是我们所说的抽象类
这一组任意个可能的具体实现就表现为所有可能的派生类
模块能够操作一个抽象体
因为模块依赖于一个固定的抽象体,所以它可以是不允许修改的
通过从这个抽象体派生,也能够扩展这个模块的行为功能