推断在接口中使用Default方法使它像Java中的抽象类一样是正确的吗?

bor*_*ree 3 java oop inheritance abstract-class interface

既然我们现在在接口中有默认方法,那么它是不是更像是一个抽象类同时使用抽象和非抽象方法?在实际使用中,我们可以互换地使用接口和抽象类吗?是否存在两者之间的差异仍然相关的情况?

use*_*751 8

是的,有些情况下两者之间的差异仍然相关.

  • 接口不能包含字段(静态字段除外).
  • 接口不能有构造函数.
  • 接口不能有最终方法.
  • 接口不能有非公共方法.

第一点是真正阻止你使用像类这样的接口.所有其他人都可以解决(尽管可能很难看).