那不是如果它是默認構造函數(即無參數構造函數),那麼超類的構造函數只會自動調用。
如果您的超類s沒有默認的構造函數,那麼你必須用super(args..)
明確地調用你選擇的構造函數。
例如,這是完全正常的,儘管事實是BearManPig
的構造比Animal
不同的簽名:
public class Animal {
public Animal() {
}
}
public class BearManPig extends Animal {
public BearManPig(String string) {
}
}
那是因爲有一個Java中的默認的無參數的構造函數。
現在,當沒有默認的構造函數時,您必須明確指出要調用哪一個。例如,這不工作:
// DOESN'T COMPILE
public class Animal {
public Animal(String string) {
}
public Animal(String string0, String string1) {
}
}
public class BearManPig extends Animal {
// There is no default constructor, stupid Java can't figure out what to do
public BearManPig(String string) {
}
}
但這:
// does compile
public class Animal {
public Animal(String string) {
}
public Animal(String string0, String string1) {
}
}
public class BearManPig extends Animal {
public BearManPig(String string) {
super(string); // I've told Java what to do
}
}
哪本教科書? – UmNyobe
現在,我在21天內堅持使用Sams Teach Yourself Java 2。稍後將趕上java的新功能。但這是他們在說什麼? –
嗯,你是正確的混淆,因爲它是不正確的... – UmNyobe