我有以下兩類:二OO問題,章構造
public class Animal {
public Animal() {
this("Animal->Horse");
System.out.println("Class Animal default const");
}
public Animal(String name) {
this.name = name;
System.out.println(this.name);
}
String name;
}
public class Pegasus extends Animal {
public Pegasus() {
System.out.println("Class Pegasus default const");
}
public static void main(String[] args)
{
Animal animal = new Animal("Black Horse");
animal.name = "Pegasus";
Pegasus pegasus = new Pegasus();
pegasus.name = "White Horse";
}
}
當我執行此我得到:
Black Horse
Animal->Horse
Class Animal default const
Class Pegasus default const
Q1:爲什麼Animal->Horse
得到印刷一次當animal
實例是否創建了pegasus
實例?本質上它是從默認的構造函數中調用的。另外爲什麼不animal
實例打印Class Animal default const
?
Q2:當我創建了pegasus
情況下,有沒有辦法爲它不叫class Animal
的默認構造函數並調用class Pegasus
默認構造函數?
爲什麼要在動物構造函數中打印出「Animal-> Horse」?這意味着你正在創造一匹馬作爲默認動物,這可能是也可能不是這個意圖。無論如何,名爲「動物」的類應該是抽象的,因爲當有人問你「什麼是動物?」時你可以(可能會)用「它取決於它是什麼樣的動物」來回答它。 – 2012-04-22 19:35:32
@ArnabDatta:謝謝:)但這只是打印一些東西。但我明白這一點。 – noMAD 2012-04-22 23:38:19