内部类继承

14
在Java中,假设我有以下类:
public class A{
  protected class B{
  }
}

我可以通过以下方式扩展内部类吗?

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

我的目标是我有上面的类C,我需要改变A的内部类中的一些内容,因此我认为我需要扩展内部类来实现,但我不确定如何具体操作。


是的,你可以像那样扩展内部类。 - Headshota
4个回答

7

根据这个页面,您已经找到了扩展内部类的正确方法。关于它的一些提示可以在文章中找到(搜索“extend”)。


1
如果那个不起作用(我不认为会起作用),那么以下的方法应该可以:
public class C extends A{
  protected class D extends A.B{
  }
}

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

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


1
如果 Dstatic 的话,它就不会起作用,但是它并不是,所以它可以。 - Jeffrey

1
你可以这样做,但不要指望你的 C 类会自动使用 D 类来替代 A 的内部 B 类。

这是继承外部/内部类数据结构的真正关键方面。是否有已知的模式来处理这个问题(例如泛型)? - sema
我会建议注入你想要使用的B类(在这种情况下是B或D)的实例。 - stryba

0
每个内部类都可以独立地从一个实现中继承。因此,内部类不受外部类是否已经从一个实现中继承的限制。
---《Java编程思想》

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接