为什么内部类被迫实现其接口方法,即使外部类具有它?

时间:2015-04-07 15:42:54

标签: java interface implementation inner-classes shadowing

public class Outer{
  public void sayHello(){ System.out.println("Hello!");}
  public class Inner implements HelloSayers{}
public interface HelloSayers{
  public void sayHello();
}
  

Outer.Inner类型必须实现继承的抽象方法HelloSayers.sayHello()。

但问题是内部类应该被视为外部方法的实现者。我错了吗?

1 个答案:

答案 0 :(得分:2)

是的,你错了。

Inner可以访问 Outer的成员,但这并不意味着它会共享这些成员。

即。 Inner的每个实例都包含对相应Outer对象(Outer.this)的引用。如果您在java代码中从Outer访问Inner的成员,则编译器只会将其转换为对Outer对象引用的Inner成员的访问权限。 Inner类不包含这些成员。