默認情況下,所有類都繼承java.lang.Object
。所以,在你的類的隱藏代碼
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那樣它含蓄,換句話說,爪哇把super()
前第一條語句孩子的構造
考慮這個例子
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
你[繼承](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html)從Object類,它有一個無參數構造函數。 _「在沒有任何其他顯式超類的情況下,每個類都隱式地是Object的一個子類。「_ –
請注意,不需要調用no-arg'super()';如果不指定它,它將由編譯器插入 – chrylis
java.lang.Object是唯一沒有超類的類,並且它的構造函數不包含super()調用 –