Java 子类不可见的抽象类中受保护接口中的方法
如果我有Java 子类不可见的抽象类中受保护接口中的方法,java,Java,如果我有 public abstract class Test { public void foo(){} protected interface Test1{ public void bar(); } } public class NewTest extends Test{ } 想知道为什么NewTest虽然扩展了抽象测试,但却看不到bar()?它需要NewTest实现Test.Test1。不知道为什么 您可以使接口(Test1)static引
public abstract class Test {
public void foo(){}
protected interface Test1{
public void bar();
}
}
public class NewTest extends Test{
}
想知道为什么NewTest虽然扩展了抽象测试,但却看不到
bar()
?它需要NewTest实现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
只是一个接口,无论它是与Test
类一起定位还是独立的。Test
中存在接口并不意味着Test
实现了Test1
,因此NewTest
也不会实现它,除非您使用implements Test显式实现它。Test1
您需要实现Test1类。您需要使用以下语法:Class.InnerClass
以下是一个例子:
Test
类没有实现Test1类<代码>foo()将不会对任何其他人可见,除非您实现该接口。为什么会这样?您刚刚定义了接口--Test
没有实现它。显示调用bar
并产生编译器错误的代码。