【发布时间】:2016-09-05 11:51:40
【问题描述】:
我正在阅读有关从内部类继承的内容,但在试图理解以下代码的工作原理时遇到了困难:
class Outer{
class Inner{
}
}
class Derived extends Outer.Inner{
Derived(Outer o){
o.super();
}
}
据我所知,关键字 super 指的是超类, super() 指的是它的无参数构造函数。在 Outer 类的情况下,超类是 Object 类。
我想了解这段代码是如何工作的。
为什么 Object 类的实例化使得扩展 Inner 类成为可能?
创建 Object 类实例与创建 Outer 类对象有什么关系?
删除包含“o.super();”的行导致错误:
java:需要包含 p.Outer.Inner 的封闭实例
我阅读了很多文章,但我不知道它是如何工作的。
我会很感激任何答案。
【问题讨论】:
-
测试一下。将 println() 行放入所有构造函数中,并观察它以什么顺序打印出来。 ;)
-
如果您在实际项目中这样做,您可能需要重新考虑您的对象层次结构。
标签: java inheritance inner-classes