Java 对象类中是否也有super(),如果有,它位于哪里?
Java 对象类中是否也有super(),如果有,它位于哪里?,java,core,Java,Core,super()隐式放置在每个构造函数中,以便它获取父类中提到的方法。层次结构中的最高类是对象 问题是Object类的super()指向哪里 对象中不会有super。检查 如您所见,它没有基类(请注意,基类隐式地是Object,但在这种情况下怎么可能呢?) 如代码注释中所述,它是Java层次结构的根。因此,它是一种特殊情况,没有超类调用。当链在对象处停止时,请思考 像A->super()->B->super()->stop对象类位于java中所有类的基础中,因此在对象类的构造函数中不会调用supe
super()
隐式放置在每个构造函数中,以便它获取父类中提到的方法。层次结构中的最高类是对象
问题是
Object
类的super()
指向哪里 对象中不会有super。检查
如您所见,它没有基类(请注意,基类隐式地是Object
,但在这种情况下怎么可能呢?)
如代码注释中所述,它是Java层次结构的根。因此,它是一种特殊情况,没有超类调用。当链在对象处停止时,请思考
像A->super()->B->super()->stop对象类位于java中所有类的基础中,因此在对象类的构造函数中不会调用super()
它不被任何类扩展,因此很明显,它在构造函数中不调用super。对象类不能有super(),因为它是类层次结构中的最高项。下面的所有内容都将有一个super()而不是Object。您可能会发现这很有趣
System.out.println("System.class.getSuperclass()= "+System.class.getSuperclass());
System.out.println("Object.class.getSuperclass()= "+Object.class.getSuperclass());
印刷品
System.class.getSuperclass()= class java.lang.Object
Object.class.getSuperclass()= null
请参阅JLS的详细信息
如果此构造函数用于非对象
的类,则此构造函数将以超类构造函数的显式或隐式调用开始(使用super
)
您可以通过编写两个类并从一个类扩展另一个类来检查这一点 例: 将A类创建为:
class A{
int a, b;
A(int a, int b){
}
}
创建扩展A类的B类:
class B extends A{
public static void main(String a[]){
B b = new B();
}
}
在尝试创建类B的对象时会出现错误,因为会调用类B默认构造函数,而intrun会调用超类“A”的默认构造函数,但类A没有任何默认构造函数或零参数构造函数