定义:
抽象类和抽象方法必须要用abstract修饰
抽象类的特点
1.抽象类和抽象方法必须用abstract关键字修饰
2.抽象类中不一定有抽象方法,但有抽象方法的类必须是抽象类
3.抽象类不能实例化、因为它不是具体的。
4.抽象类有构造方法,但不能实例化,构造方法有何用?
用于子类访问父类数据的初始化
5.抽象的子类
抽象类的子类如果不想重写抽象方法,该子类是一个抽象类
如果重写所有的抽象方法,子类是个具体类
抽象类的成员特点:
成员变量:可以是变量 也可以是常量
构造方法:有,用于子类访问父类数据的初始化
成员方法:既可以抽象 也可非抽象,抽象方法是强制要求子类做的事情,非抽象方法时子类继承的事情,提高代码复用性。
几个问题:
一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,不让创建对象
abstract不能和哪些关键字共存
private ::因为一个abstract方法需要被重写,所以不能修饰为private;
final:因为一个abstract方法需要被重写。被final修饰的方法是不能被重写的,所以不能同final共存;
static :因为一个abstract方法没有方法体。静态方法需要对方法体执行内容分配空间,所以不能同static共存;
毕老师说如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
可是抽象方法运行没意义。
synchronized
: 是同步的,然而同步需要具体的操作才能同步,但,
abstract
是只有声明没有实现的(即,使用
synchronized
关键字的是需要有具体的实现同步的操作的,但是使用
abstract
是只有声明而没有实现的,这样就产生了冲突)
native
:他们本身的定义就是冲突的,
native
声明的方法是移交本地操作系统实现的,而
abstract
是移交子类对象实现的,同时修饰的话,导致不知道谁实现声明的方法