【发布时间】:2009-10-19 15:52:54
【问题描述】:
我很困惑为什么允许这样做
public class Foo {
class Bar extends Foo {
}
}
但这是不允许的
public class Foo {
class Bar extends Foo {
}
class Fooey extends Bar {
}
}
编译器在调用超类型构造函数之前通知它不能引用 Fooey.this。
这是允许的
public class Foo {
static class Bar extends Foo {
}
class Fooey extends Bar {
}
}
这里发生了什么?我在哪里可以找到有关内部类继承如何工作的更多信息?
编辑我遇到了两个相当糟糕的想法;内部类扩展外部类,内部类扩展其他静态内部类。我不确定到底发生了什么以及我应该如何重构它。我最终只是抽出内部类并将它们封装在外部类中。
【问题讨论】:
-
看看这个问题,很确定这重复了它:stackoverflow.com/questions/70324/…
-
不是骗子(至少不是那个)。
-
拥有要扩展的类的外部实例有什么用?
-
@Jorn,我在重构旧代码时遇到了这两个问题。是的,在生产环境中发生了可怕的事情。
标签: java inheritance inner-classes