关于接口中的default关键字
来源:2-2 容器、集合、映射: 随机序列产生器

慕雪1523426
2021-10-08
请问带default关键字的接口定义和直接在抽象类中定义有什么区别呢。为什么要在接口中设计default关键字呢?
写回答
1回答
-
求老仙
2021-10-14
继承是一种重耦合关系, 不推荐使用。 接口是一种组合关系。 抽象类位于继承和接口之间。
接口的default关键字为接口提供实现。 是什么实现? 具体来说,default是构建在接口内部方法的逻辑上。
例如:
interface Operator { int operate(int n); default int inverse(int n) { return -operate(n); } }
上面的inverse方法,的确可以在接口中实现的。 而且不会产生耦合,因为它只依赖Operator接口。
注意!重点来了,不会产生耦合,因此它存在很合理。 default方法无论怎么设计,你也设计不出耦合的程序。
但是抽象类不同,它太灵活;一方面它可以作为一个父类的实现,比如进行依赖注入,比如读取文件……
另一方面,它又拥有部分接口的能力。
个人建议,能不用抽象类就不用,继承关系是重度耦合关系,接口是组合关系。
00
相似问题