我尝试了下面的代码,并根据它的执行结果得出内部类被继承到外部类的子类中的结论。这个结论正确吗?
由于这行代码有效,所以意味着内部类被继承到了ChildClass中。
我有些困惑是因为我在链接上发现了以下声明:
当外部类被其子类扩展时,成员内部类不会被继承到子类。为了在外部类的子类中使用内部类属性,子类必须也有一个内部类,并且该内部类必须扩展外部类的内部类。
class Outter{
int i=1;
class Inner{
int i=2;
public void hello(){
System.out.println("hello from outter.inner");
}
}
}
class ChildClass extends Outter{
class ChildInner{
}
}
public class Classes {
public static void main(String[] args) {
Inner inner = (new ChildClass()).new Inner();
System.out.println(inner.i);
inner.hello();
}
}
期望的输出:
2
来自 outter.inner 的 hello
Inner inner = (new ChildClass()).new Inner();
由于这行代码有效,所以意味着内部类被继承到了ChildClass中。
我有些困惑是因为我在链接上发现了以下声明:
当外部类被其子类扩展时,成员内部类不会被继承到子类。为了在外部类的子类中使用内部类属性,子类必须也有一个内部类,并且该内部类必须扩展外部类的内部类。
Inner
有一个名为i
的字段,代码明确打印该字段的值inner.i
- 这与任何父类或外部类无关。该语句只是创建了一个Inner
类,它是 新 的ChildClass
实例的内部类,在该语句中也创建了该实例。 - user85421