一、抽象类是什么?
菜鸟教程中指出:
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
简单来说就是:
不能实例化的类称为抽象类。
延伸推论:
- 有抽象方法的类是抽象类
- 被abstract修饰的类是抽象类
二、抽象类与接口有什么区别?
记住最重要的一点,一个是类,一个是接口(废话),然后开始发散
- 抽象类里的方法可以有具体实现,而接口不能。(即抽象类中的方法不一定全是抽象方法)
- 一个类只能继承一个抽象类,却可以实现多个接口。
- 抽象类可以有静态代码块和静态方法,而接口不能。
- 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量
- 子类中实现父类中的抽象方法时,可见性可以大于等于父类中的;而接口实现类中的接口 方法的可见性只能与接口中相同(public)
三、你为什么要使用抽象类?
或者说你在哪里用到了抽象类?
像这样开放性问题,非常适合带动节奏,或者说给面试官积极的暗示。
如果你简单地说:为了重用。减少编