理解Abstractclass和Interface
语法和实践上的区别
- 抽象类主要是类对象的抽象集合
- 抽象方法主要是类方法的抽象集合
Abstract Class
Interface
实例化
不能
不能
类
是一种继承关系,一个类智能使用一次继承关系。
可以通过继承多个接口实现多重继承
一个类可以实现多个接口
数据成员
可以有自己的
必须是默认的static final
方法成员
可以有私有方法,有非abstract方法,如果有abstract方法,
子类必须实现,否则也必须是abstract的
默认是public abstract类型
设计理念
表示的”is-a”关系
表示是”like-a”关系
集成和抽象
需要继承,要用extends关键字
implements关键字
应用
主要在代码实现方面发挥作用,用于实现代码的重用
主要在架构设计方面发挥作用,主要用于
定义模块间的通信契约(依赖倒转原则)
abstract class和interface在使用上最大的区别应当是IS A 和 LIKE A 的区别,继承一个抽象类表示是什么,而实现一个接口仅仅表示实现了某个功能,即使在他们可以实现对方功能的情形下也应当明确区分其区别(开闭原则),这影响到代码的可维护性和可阅读性。
另一方面,Java是不支持多继承的,却可以同时实现多个接口,如果我们继承了某个抽象类,就应当表
示子类在本质上属于父类(
里氏替换原则),而接口的实现仅仅表示可以完成某种功能。也就是说,使用继承描述不会轻易改变的更本质的部分,而使用接口实现更灵活的扩展功能。(
接口隔离原则和合成复用原则)。
需要说明的是,Java 8 增强后的接口可以定义默认方法(使用 default 修饰的方法)和
类方法(使用 static 修饰的方法),接口中的默认方法和类方法都不再是抽象方法,都需要
提供方法体。Java 9 则允许接口中定义 private 方法,private
方法可以拥有方法体。
以上是 理解Abstractclass和Interface 的全部内容, 来源链接: utcz.com/z/514073.html