我找到了这样一个类:
public class Computer implements Serializable {
private static final long serialVersionUID = 1L;
//...
public Computer() {
super();
}
//...
}
谁能给我解释一下,这是怎么回事?该类没有继承任何父类(super class),仍然可能有“super();”在构造函数中?
最佳答案
默认所有类都继承java.lang.Object
。所以你类(class)中的一个隐藏代码是
public class Computer extends java.lang.Object implements Serializable {
private static final long serialVersionUID = 1L;
//...
public Computer() {
super(); //here Object's default constructor is called
}
//...
}
如果父类有默认构造函数(无参数)并且子类定义了默认构造函数,则不需要显式调用父类的构造函数。
Java 是隐式执行的,换句话说,Java 将 super()
放在子构造函数的 first statement 之前
考虑这个例子
class Base {
public Base() {
System.out.println("base");
}
}
class Derived extends Base {
public Derived() {
//super(); call is not necessary.. Java code puts it here by default
System.out.println("derived");
}
}
因此,当您创建 Derived d = new Derived();
时,输出是..
base
derived
关于java - 如果没有 super 类, super 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21181125/