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

时间:2014-07-09 06:56:46

标签: java

我在Java 8中实现了defender(默认)方法的实际实现,其中我有一个页面的默认settin和特定页面的一些附加功能。基本上,我必须首先调用默认方法,然后调用overriden方法,如下例所示:

 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()做同样的事情,但不太明白这个语句是如何工作的。 此外,当我检查接口A的变量和方法时(通过在Eclipse中给出'A'(点),我只能看到2个变量,即'this'和'class'。没有super存在。

这个A.super.foo()如何正常工作?请帮忙。

1 个答案:

答案 0 :(得分:1)

语法A.super.foo()似乎类似于A.this,一个合格的引用。由于defender方法为您提供了一种多重继承,因此super变得暧昧,您需要使用A.super来限定它。