在Java中,A.super.func(),它的含义是什么?(接口默认)

时间:2016-03-28 05:51:55

标签: java

interface A{
     default void func(){
         System.out.println("This function is a default function in interface A!");
     }
}
interface B{
     default void func(){
         System.out.println("This function is a default function in interface B");
     }
}
class C implements A,B{
     public void func(){
         System.out.println("func in class C!");
         A.super.func();//What's meaning?
     }
}

2 个答案:

答案 0 :(得分:4)

由于AB都有func()的默认实现,A.super.func()允许您调用A的默认实现{ {1}}(同样func()会调用B.super.func() B的默认实现。

答案 1 :(得分:4)

来自docs

  

如果您的方法覆盖了其超类之一的方法,则可以通过使用关键字super

来调用重写方法

因此,通过调用super.func(),您可以访问超类的func()方法。但是这里A & B都有同名的函数,因此你必须告诉编译器使用哪个super。

通过告诉A.super你告诉编译器使用接口A的方法。同样适用于B