Lý do tại sao trẻ không in "con" là thừa kế trong java, chỉ có các phương thức được kế thừa chứ không phải các trường. Biến số output
không bị ghi đè bởi đứa trẻ.
Bạn có thể làm điều đó như thế này:
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;
}
}
Ngoài ra, các biến chuỗi không cần phải là tên gọi khác nhau, nhưng tôi đã làm như vậy ở đây cho rõ ràng.
Một cách dễ đọc hơn sẽ là để làm điều này:
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";
}
}
Trong ví dụ này biến là protected
, có nghĩa là nó có thể được đọc từ cả phụ huynh và trẻ em. Hàm khởi tạo của các lớp đặt biến cho giá trị mong muốn. Bằng cách này, bạn chỉ thực hiện chức năng in một lần và không cần phương thức ghi đè trùng lặp.
Nguồn
2010-11-15 19:57:45
ok, nó hoạt động, nhưng tôi don không hiểu tại sao cố gắng của tôi không có khả năng để làm việc .... –
@ Martin: Bởi vì bạn đã tạo một biến hoàn toàn riêng biệt và đặt giá trị của * that * trong 'Child'. Lớp 'Parent' không biết biến trong' Child'. –