Java抽象类与接口:核心区别、使用场景解析
JAVA抽象类和接口的区别,使用场景
技术区别:
抽象类可以包含方法的实现,而接口只能包含方法的声明。
一个类只能包含一个抽象基类,但可以包含多个接口。
语义上的差异(这个差异比较重要,也比较难理解)与设计有关。
正确使用和区分抽象类和接口可以使您的设计更加灵活和强大。
抽象类代表类实体,但这种类型的实体不能被实例化。
接口一般不能代表实体,而只能代表功能或特性。
例如,图形类Shape可以派生自三角形、正方形等。
Shape是一个抽象类,表示图形实体,但不能实例化。
它有一个Drawable接口,表示它可以被绘制。
在英语中,shape是名词,drawable是形容词。
这就是语义上的差异。
当然,你必须将Drawable声明为抽象类,将Shape声明为接口,从技术上讲,没有问题,但这方面很奇怪,很难理解。
如果你觉得不懂,可以提问。
这两个概念有些模糊。
学习设计是一件好事。
设计意识的好坏将极大地影响你在软件工程领域所能达到的高度。
抽象类和接口的区别在哪里?
1.不同的方法
接口方法默认是public的,并不是所有的方法都可以在接口中实现(从Java8开始,接口方法可以有默认的实现),而抽象类可能没有实现。
-抽象方法。
2.质量不同
接口中除了static和final变量外不能有其他变量,但抽象类中则不一定。
3.不同数量
一个类可以实现多个接口,但只能实现一个抽象类。
接口本身可以通过extends关键字扩展多个接口。
4.修饰符不同
接口方法的默认修饰符是public,抽象方法可以有public、protected、default修饰符(抽象方法是为了重写,不能用private关键字修饰)。
5.不同层次的设计
抽象是类的抽象和模型的设计,而接口是行为的抽象和行为的规范。
扩展信息;
接口可以是命名空间或类的成员,并且可以包含以下成员的签名:
方法属性索引器事件接口可以继承一个或多个基接口。
当基类型列表包含基类和接口时,基类必须是列表中的第一个元素。
实现接口的类可以显式地实现接口的成员。
显式实现的成员不能通过类实例访问,而只能通过接口实例访问。
参考来源;百度百科-抽象类
百度百科-接口