Java修饰符 --- abstract
使用抽象类的好处:接口和实现分离
@
一、表明类或者成员方法具有抽象属性
-
abstract 修饰的类为抽象类,如:
abstract class A { }
-
abstract 修饰的方法为抽象方法,如:
abstract int getId();
对于 abstract 方法只能声明不能实现(因为没有方法体),并且只能是实例方法,不能是类方法
二、抽象类(abstract 类)和普通类的区别
-
抽象类中可以有抽象方法,也可以有普通方法
普通方法不能有抽象法
-
普通类可以通过
new
创建,抽象类不能,所以,想要创建该对象,需要非抽象类子类重写父类的抽象方法,并且实现
三、修饰符矛盾(final、private、static)
- abstract 不能和 final、private、static 一起修饰使用
- 原因:abstract 修饰的方法是必须在子类中实现(覆盖),才能以多态方式调用,而
final
修饰父类,子类不能实现;private
修饰,子类不能继承;static
修饰虽然可以实现,但是调用时会先调用编译时类型的方法,也就是父类的 static 方法,结果发现是抽象方法,不能调用,所以,abstract 和 final、private、static不能一起用
四、abstract 类的子类
- 子类是非 abstract 类,必须重写父类的 abstract 方法,给出方法体
- 子类是 abstract 类,可以重写父类的 abstract 方法,也可以继承父类的 abstract 方法(暂时不实现abstract方法)