0

假设我有两个课程,A并且B

class A
{
    void method()
    {
        System.out.println("a.method");
    }
}
class B extends A
{
    @Override
    void method()
    {
        System.out.println("b.method");
    }
}

实例化Bas后b,就可以调用Blike 的方法了b.method()。我也可以B用. 但是如果是一个接口呢:Asuper.method()A

interface A
{
    default void method()
    {
        System.out.println("a.method");
    }
}
class B implements A
{
    @Override
    void method()
    {
        System.out.println("b.method");
    }
}

有什么办法可以让B' 方法调用A' 的方法?

4

1 回答 1

2

是的你可以。利用

A.super.method();

JLS声明_

如果表格是TypeName . super . [TypeArguments] Identifier,那么:

如果TypeName既不表示类也不表示接口,则为编译时错误。

如果TypeName表示一个类 C,则要搜索的类是 C 的超类。

如果 C 不是当前类的词法封闭类型声明,或者 C 是类 Object,则这是编译时错误。

T是立即包含方法调用的类型声明。如果T是类 Object,则为编译时错误。

否则,TypeName表示要搜索的接口,I

于 2014-04-07T13:24:13.677 回答