孩子不打印「孩子」的原因是,在java繼承中,只有方法是繼承的,而不是字段。變量output
不會被孩子覆蓋。
你可以做這樣的:
public class Parent {
private String parentOutput = "hallo";
String getOutput() {
return output;
}
public void print() {
System.out.println(getOutput());
}
}
public class Child extends Parent {
private String childOutput = "child";
String getOutput() {
return output;
}
}
此外,字符串變量並不需要是不同的名字,但我這樣做是這裏的清晰度。
另一個更可讀的方式將做到這一點:
public class Parent {
protected String output;
public Parent() {
output = "hallo";
}
public void print() {
System.out.println(output);
}
}
public class Child extends Parent {
public Child() {
output = "child";
}
}
在這個例子中,變量爲protected
,這意味着它可以從父母和孩子都被讀取。類的構造函數將變量設置爲期望的值。這樣你只能實現一次打印功能,並且不需要重複的重寫方法。
OK,它的工作原理,但我不不明白爲什麼我的企圖是不能工作.... – 2010-11-15 19:39:19
@馬丁:因爲你正在創建一個完全獨立的變量,並在'Child'中設置* that *的值。 「Parent」類不知道「Child」中的變量。 – 2010-11-15 19:58:57