Java 8默认方法与抽象类中的非抽象方法

Par*_*bay 12 java abstract-class java-8 default-method

Java 8接口默认方法与抽象类中的非抽象方法 - 两者之间是否存在任何差异(除了iface的类别,可见性等)

不是Java中的默认方法,这意味着它违背了Java多年来所宣传的本质?!

Ani*_*kur 7

抽象类中的非抽象方法将被调用,如果它被覆盖,则它的具体子类调用super().所以有多种可能性.如果未覆盖方法,则将执行超类方法.如果我们在具体的子类方法中使用super(),那么将执行使用超类方法的重写方法.

其中Java 8接口的默认方法完全不同.它为开发人员提供了在实现类中实现该方法的选择.如果该函数未实现,则只执行默认方法.

可能的用例:

JDK库中这个新特性最重要的用例是可以在不破坏现有实现的情况下扩展现有接口:向接口添加新的抽象方法将需要所有实现类来实现该新方法.(来源)

  • @Parobay是的.请参见此处:http://stackoverflow.com/questions/19976487/explicitly-calling-a-default-method-in-java (2认同)