为什么一个内部 class 被迫实现它的接口方法,即使外部 class 有它?
Why is an inner class forced to implement its interface methods, even if the outer class has it?
public class Outer{
public void sayHello(){ System.out.println("Hello!");}
public class Inner implements HelloSayers{}
public interface HelloSayers{
public void sayHello();
}
The type Outer.Inner must implement the inherited abstract method HelloSayers.sayHello().
但问题是内部 class 应该被视为外部方法的实现者。我错了吗?
是的,你错了。
Inner
可以 访问 Outer
的成员,但这并不意味着它共享这些成员。
即Inner
的每个实例都包含对相应 Outer
对象 (Outer.this
) 的引用。如果您在 java 代码中从 Inner
访问 Outer
的成员,编译器只是将其转换为对 [=10] 引用的 Outer
成员的访问=] 对象。 Inner
class 不包含这些成员。
public class Outer{
public void sayHello(){ System.out.println("Hello!");}
public class Inner implements HelloSayers{}
public interface HelloSayers{
public void sayHello();
}
The type Outer.Inner must implement the inherited abstract method HelloSayers.sayHello().
但问题是内部 class 应该被视为外部方法的实现者。我错了吗?
是的,你错了。
Inner
可以 访问 Outer
的成员,但这并不意味着它共享这些成员。
即Inner
的每个实例都包含对相应 Outer
对象 (Outer.this
) 的引用。如果您在 java 代码中从 Inner
访问 Outer
的成员,编译器只是将其转换为对 [=10] 引用的 Outer
成员的访问=] 对象。 Inner
class 不包含这些成员。