【发布时间】:2010-10-24 18:50:10
【问题描述】:
一个类可以是它自己的“子类”,如果它的内部类扩展了外部类 因此该类以某种方式扩展自身而不会引发任何异常。那么,这真的意味着一个类也是它自己的一个子类吗?
谢谢。
【问题讨论】:
标签: java class inheritance
一个类可以是它自己的“子类”,如果它的内部类扩展了外部类 因此该类以某种方式扩展自身而不会引发任何异常。那么,这真的意味着一个类也是它自己的一个子类吗?
谢谢。
【问题讨论】:
标签: java class inheritance
public class ParentClass {
int intField = 10;
class InnerClass extends ParentClass {
}
public static void main(String... args) {
ParentClass parentClass = new ParentClass();
InnerClass innerClass = parentClass.new InnerClass();
System.out.println(innerClass.intField);
InnerClass innerClass2 = innerClass.new InnerClass();
}
}
【讨论】:
如果你定义一个类的子类是这样的:
public class Test {
public static void main(String[] args) {
// whatever...
}
class TestChild extends Test {
// whatever...
}
}
那么是的,这是可能的。但请注意,这是两个完全独立的类,除非一个是另一个内部的。
【讨论】:
实际上 JVM 现在没有关于内部类的任何内容。
编译后所有内部类都变成普通类,但编译器为它们提供了外部类所有字段的访问器。
在 OOP 理论中,类不能是它的子类或超类。
【讨论】:
子类的定义是它扩展了另一个类并继承了该类的状态和行为。一个类不能扩展自己,因为它是它自己,所以它不是一个子类。内部类可以扩展外部类,因为它们是两个不同的类。
【讨论】:
类不是它自己的子类。内部类可以是某个其他类的子类,但那是一个单独的类。您可以通过比较调用 getClass() 时获得的 Class 实例来验证这一点。
【讨论】:
没有。内部类与其外部类完全不同。除非我误解了你的问题...
【讨论】: