【问题标题】:inner class extending内部类扩展
【发布时间】:2012-03-16 12:27:15
【问题描述】:

在java中,假设我有以下类:

public class A{
  protected class B{
  }
}

我可以通过执行以下操作来扩展内部类吗?

public class C extends A{
  protected class D extends B{
  }
}

我想要做的是我有上面的 C 类,我需要更改 A 的内部类中的某些内容,所以我想我需要扩展内部类来这样做,但我不确定如何准确这样做。

【问题讨论】:

  • 是的,你可以像这样扩展内部类。

标签: java inheritance extends


【解决方案1】:

如果这不起作用(我认为不会),以下应该:

public class C extends A{
  protected class D extends A.B{
  }
}

嗯,它会的,但是如果你在A 之外还有另一个名为B 的类呢?

编辑:不,没有区别。即使有另一个名为B 的类,它仍然会占用A.B。所以你的语法是正确的。

【讨论】:

  • 如果Dstatic,它就不会起作用,但它不是,所以它起作用了。
【解决方案2】:

根据this page,您找到了扩展内部类的正确方法。关于它的一些提示可以在文章中间找到here(搜索“扩展”)。

【讨论】:

    【解决方案3】:

    您可以这样做,但不要期望您的 C 类自动使用 D 类而不是 A 的内部 B 类。

    【讨论】:

    • 这是继承外部/内部类数据结构的真正关键方面。是否有任何已知的模式来处理这个问题(泛型等)?
    • 我会说注入你想要使用的 B 的实际实例(在这种情况下是 B 或 D)。
    【解决方案4】:

    每个内部类都可以独立地从一个实现继承。 因此,内部类不受外部类是否为 已经从实现继承。

    --- 用 Java 思考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多