Java 抽象(abstract)
抽象
- 概念
- 抽象就是从多个事物中将共性的,本质的内容抽象出来
- 抽象类
- Java中可以定义没有方法体的方法,方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
- 由来
- 多个对象具有相同的功能,但功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能定义,没有功能主体的方法称为抽象方法。
抽象类特点
- 抽象方法一定在抽象类中。
- 抽象方法和抽象类必须被abstract修饰。
- 抽象类不能用new创建对象,因为调用抽象方法没有意义。
- 抽象类中的抽象方法要被使用,必须由子类重写其所有的抽象方法后,创建子类对象调用;如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
- 抽象类中可以有抽象方法,也可以由非抽象方法。
- 如果一个类是抽象类,那么继承它的子类要么是抽象类,要么重写所有的抽象方法。
抽象类的成员特点
成员变量:可以是变量,也可以是常量
构造方法:有构造方法
成员方法:可以是抽象方法,也可以是非抽象方法
抽象类注意事项
抽象类不能被实例化,为什么还要有构造函数?
只要是class定义的类里面肯定有构造函数。抽象类中的构造函数是给子类实例化的。
一个类没有抽象方法,为什么要定义为抽象类?
(不想被继承,还不想被实例化)
抽象类关键字不能和哪些关键字共存
final,如果方法被抽象,就需要被重写,而final是不能被重写的,所以冲突。
static,被static修饰的方法可以直接用类名调用,而调用抽象方法没有意义。
private,被private修饰的方法被私有,子类无法重写。