public class Animal {
public Animal(String aType) {
type = new String(aType);
}
public String toString() {
return "This is a " + type;
}
private String type;
}
public class Dog extends Animal {
public Dog(String aName) {
super("Dog");
name = aName;
breed = "Unknown";
}
public Dog(String aName, String aBreed) {
super("Dog");
name = aName;
breed = aBreed;
}
private String name;
private String breed;
}
public class TestBerived {
public static void main(String[] args) {
Dog aDog = new Dog("Fido", "Chihuahua");
Dog starDog = new Dog("Lassie");
System.out.println(aDog);
System.out.println(starDog);
}
}
输出结果是:
This is a Dog
This is a Dog
[size=x-small]请问调用基类的构造函数为何会隐含调用基类的toString方法呢?[/size]
[code="java"]
public Dog(String aName) {
super("Dog");
name = aName;
breed = "Unknown";
}
public Dog(String aName, String aBreed) {
super("Dog");
name = aName;
breed = aBreed;
}
[/code]
大哥,你在这里面 就把type赋值为"Dog",然后System.out.println(aDog),就会调用toString()方法了
public Animal(String aType) {
type = [b]new String(aType)[/b];
}
在这地方调用了,你自己写的string函数。
JAVA中有个规则是,当你打印一个对象时候,就调用这个对象的toString()方法,toString()是最根部的Object类的方法,这里被你重写了。