gpt4 book ai didi

java - A.super.foo() 在 Defender 方法 (Java 8) 中如何工作?

转载 作者:行者123 更新时间:2023-12-01 12:46:35 24 4
gpt4 key购买 nike

我正在 Java 8 中实现后卫(默认)方法的实际实现,其中我有一个页面的默认设置和特定页面的一些附加功能。基本上,我必须先调用默认方法,然后调用重写方法,如以下示例所示:

 interface A {

default void foo() {
System.out.println("This is default foo method of interface A");
}
}

class B implements A {

public void foo() {
A.super.foo(); //This statement is confusing
System.out.println("This method is from class B");

}

}

经过一番搜索,我找到了一种使用 A.super.foo() 执行相同操作的方法,但不太明白这个语句是如何工作的。另外,当我检查接口(interface) A 的变量和方法时(通过在 Eclipse 中输入“A.”(点),我只能看到 2 个变量,即“this”和“class”。没有 super 存在。

这个 A.super.foo() 究竟是如何工作的?请帮忙。

最佳答案

语法 A.super.foo() 似乎与 A.this 类似,都是限定引用。由于 Defender 方法为您提供了某种多重继承,因此 super 变得不明确,您需要使用 A.super 来限定它。

关于java - A.super.foo() 在 Defender 方法 (Java 8) 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24647169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com