【发布时间】:2021-07-08 07:26:03
【问题描述】:
在下面的代码中,super关键字指的是什么?
class A {
int i1 = 10;
A() {
System.out.println("class A");
}
}
class B extends A {
int i2 = super.i1;
B() {
System.out.println("class B");
}
}
class C extends B {
int i3 = super.i2;
public static void main(String args[]) {
C c = new C();
System.out.println(c.i3);
}
}
如果没有创建超类的对象/实例,那么 super 关键字引用的是什么,因为它是一个引用变量并且应该引用超类实例?
【问题讨论】:
-
只有一个对象,但它是C,也是B,也是A。 super();调用父类的构造函数
-
这毫无意义。我的意思是,人们经常为了约定而写它,但它对 A 类没有影响。
-
我怀疑你在这里需要超级。您可以删除 super 并获得相同的结果。
-
如果你不在这里写
super(),编译器会为你插入as described here,因为超类有零参数的构造函数。 -
@ArnauMas 它在其他类中没有真正的“效果”,也没有
标签: java object inheritance super