抽象类中受保护接口中的方法对子类不可见



如果我有

public abstract class Test {
    public void foo(){}
    protected interface Test1{
        public void bar();
    }
}
public class NewTest extends Test{
}

想知道为什么bar()对NewTest不可见,尽管它扩展了抽象测试?它需要让NewTest实现Test.Test1。想知道这是为什么。

接口

Test1只是一个接口,无论它位于Test类还是独立。 Test中接口的存在并不意味着Test实现了Test1,所以NewTest也不会实现它,除非你用implements Test.Test1显式实现它。

你可以使接口(Test1static引用它,而无需父类(Test)的实例。

例如:

public abstract class Test {
  public void foo() {}
  protected static interface Test1 {
    public void bar();
  }
}
public class NewTest extends Test {}
可以像对待成员

变量或方法一样考虑这一点:如果类可见,则可以访问静态成员/方法/内部类;如果未使用 static 关键字,则需要类的实例才能访问它们。

你需要实现 Test1 类。您需要使用此语法: Class.InnerClass

这是一个例子: http://ideone.com/wr5bON

Test类未实现 Test1 类。 除非您实现该接口,否则 foo()对其他人不可见。

最新更新