如果我有
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
显式实现它。
你可以使接口(Test1
)static
引用它,而无需父类(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()
对其他人不可见。