javaSE复习之——面向对象_抽象类
抽象类
- 关键字:
abstract
1 | abstract class 类名 {} //抽象类 |
特点:
1、抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
2、抽象类不能实例化,但可以通过多态(子类)来说实现实例化
3、abstract强制子类重写
抽象类的几个问题:
1、为什么不直接定义空方法?
解答:抽象类可以正确的引导使用者正确使用它们,
减少被误用
2、抽象类有什么作用?
解答:增强程序的
扩展性
和兼容性
,规范编程
抽象类中的面试题:
1、一个抽象类可以没有抽象方法,抽象类的意义是防止别人创建这个类的对象(抽象类不能被实例化)
2、
abstract
不能和static
共存原因:
static
让这个方法是静态方法,而静态方法可以用类名.方法名
调用,而静态方法可以类名.方法名
调用的底层原因是这个方法的对象已经在程序运行时就被创建,并且存到静态区域了,但是抽象方法是抽象的,不是具体的,所以它不能被实例化,进而abstract
不能和static
共存。3、
abstract
不能和final
共存原因:
abstract
强制子类重写,而final
表示最终的,它不让子类重写,这里形成了冲突。4、
abstract
不能和private
共存原因:
abstract
强制子类重写,而private
让子类访问不到,所以它们两个修饰符形成了冲突。