Java新版本中的接口类和抽象类有什么区别

/ 默认分类 / 0 条评论 / 117浏览

最近使用Java17和Java21,发现接口类中可以写入变量,方法可以有默认实现。越来越像抽象类了。

那么这么接近的两个东西,区别是什么呢?是不是可以代替抽象类了呢?

思索一段时间,并询问了AI,都是一堆没用的话。

根据这些年的使用,从本质上看,其实接口类一直用于“协议”,实现了这个接口,就是拥有了某种能力,也就是一种标记。例如“动能能跑”。

而抽象类的设计意图是继承了它的类“是”它,例如“狗是动物”。

那么从设计思路上看,抽象类是自下而上的设计思想。接口是自上而下的设计思路。(当然对于习惯从实现反推接口的佬儿,那就没话可说了,早点退休吧,抽象意识一点也没有)

这就是区别吧