【问题标题】:Why is an inner class forced to implement its interface methods, even if the outer class has it?为什么内部类强制实现它的接口方法,即使外部类有它?
【发布时间】:2015-04-07 15:42:53
【问题描述】:
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()。

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

【问题讨论】:

    标签: java interface implementation inner-classes shadowing


    【解决方案1】:

    是的,你错了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2018-10-24
      • 2012-12-03
      • 1970-01-01
      相关资源
      最近更新 更多