关于接口中的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方法无论怎么设计,你也设计不出耦合的程序。

但是抽象类不同,它太灵活;一方面它可以作为一个父类的实现,比如进行依赖注入,比如读取文件……

另一方面,它又拥有部分接口的能力。

个人建议,能不用抽象类就不用,继承关系是重度耦合关系,接口是组合关系。

0
0

笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

深度剖析大厂面试高频真题,让你秒变offer收割机

1783 学习 · 314 问题

查看课程