在Java中,A.super.func(),what';它的含义是什么?(界面默认)
由于在Java中,A.super.func(),what';它的含义是什么?(界面默认),java,Java,由于A和B都有func()的默认实现,A.super.func()允许您调用A的func()的默认实现(同样B.super.func()也会调用B的默认实现func()).从 如果您的方法重写其超类的一个方法,则可以通过使用关键字super调用被重写的方法 因此,通过调用super.func()可以访问超类的func()方法。但是这里A&B都有同名函数,因此您必须告诉编译器要使用哪个super 因此,通过告诉A.super您正在通知编译器使用接口A的方法。如果您想调用特定接口的默认实现,并且有多
A
和B
都有func()
的默认实现,A.super.func()
允许您调用A
的func()
的默认实现(同样B.super.func()
也会调用B
的默认实现func()
).从
如果您的方法重写其超类的一个方法,则可以通过使用关键字super调用被重写的方法
因此,通过调用super.func()
可以访问超类的func()
方法。但是这里A&B
都有同名函数,因此您必须告诉编译器要使用哪个super
因此,通过告诉
A.super
您正在通知编译器使用接口A的方法。如果您想调用特定接口的默认实现,并且有多个接口实现该方法,那么B为什么使用接口.super?@ShawnLiu也是如此,这是指定所需实现的唯一方法。@Eran super是必需的,因为不能使用.func(),因为它不是static@YassinHajaj没错。我假设问题更多的是关于接口名称而不是super关键字本身(即为什么A.super.func()
而不是简单的super.func()
)super
是必需的,因为你不能使用A.func()
,因为它不是staticsuper,因为你不能使用A.func(),因为它不是staticyah。。这是显而易见的:)是的,但我认为不是这样。因此,他对埃兰的回答发表了评论。
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?
}
}