javaSE复习之——面向对象_抽象类

抽象类

  • 关键字:abstract
1
2
abstract class 类名 {}			//抽象类
public abstract void eat(); //抽象方法
  • 特点:

    1、抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口

    2、抽象类不能实例化,但可以通过多态(子类)来说实现实例化

    3、abstract强制子类重写

  • 抽象类的几个问题:

    1、为什么不直接定义空方法?

    解答:抽象类可以正确的引导使用者正确使用它们,减少被误用

    2、抽象类有什么作用?

    解答:增强程序的扩展性兼容性规范编程

  • 抽象类中的面试题:

    1、一个抽象类可以没有抽象方法,抽象类的意义是防止别人创建这个类的对象(抽象类不能被实例化)

    2、abstract不能和static共存

    原因:static让这个方法是静态方法,而静态方法可以用类名.方法名调用,而静态方法可以类名.方法名调用的底层原因是这个方法的对象已经在程序运行时就被创建,并且存到静态区域了,但是抽象方法是抽象的,不是具体的,所以它不能被实例化,进而abstract不能和static共存。

    3、abstract不能和final共存

    原因:abstract强制子类重写,而final表示最终的,它不让子类重写,这里形成了冲突。

    4、abstract不能和private共存

    原因:abstract强制子类重写,而private让子类访问不到,所以它们两个修饰符形成了冲突。