抽象类
抽象类主要指不能具体实现的类,体现在该类不能实例化/构造对象并使用abstract修饰。
抽象方法
抽象方法主要指不能具体实现的方法,体现在该方法没有方法体并使用abstract关键字修饰
public abstract void 方法名();
注意事项
- 抽象类中可以有成员变量、成员方法以及构造方法。
- 抽象类中可以有抽象方法也可以没有。
- 拥有抽象方法的类必须是抽象类,因此严格来说,具有抽象方法并使用abstract
关键字修饰的类才是真正意义上的抽象类
意义
抽象类的意义在于被继承而不是自身实例化对象,当一个类继承另一个类,必须重写抽象方法,否则自身也必须是抽象类,所以抽象类对子类具有规范性
接口
接口是一种比抽象类还抽象的类,因此也不能实例化对象 定义接口的关键字是interface
,实现接口的关键字是implements
抽象类和接口之间的区别
- 定义抽象类的关键字是class,而定义接口的关键字是interface。
- 继承抽象类的关键字是extends,而实现接口的关键字是implements。
- 继承抽象类支持单继承,而实现接口支持多实现。
- 抽象类中可以有构造方法,而接口中不可以有。
- 抽象类中可以有成员变量,而接口中只可以有常量。
- 抽象类中可以有成员方法,而接口中只可以有抽象方法。
- 抽象类中增加方法通常不影响子类,而接口中增加方法通常影响子类。
- 从jdk1.8开始允许接口中有非抽象方法,但需要使用default关键字修饰。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!