我有以下两类:二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