Hãy xem xét các loại sau đây:Liệu một đối tượng con mất tính độc đáo của nó sau khi đúc qua lại giữa một lớp cha mẹ
public class Phone {
private boolean has3g;
public boolean has3g() {
return has3g;
}
public void setHas3g(boolean newVal) {
has3g = newVal;
}
}
public class Blackberry extends Phone {
private boolean hasKeyboard;
public boolean hasKeyboard() {
return hasKeyboard;
}
public void setHasKeyboard(boolean newVal) {
hasKeyboard = newVal;
}
}
Nếu tôi là tạo ra một thể hiện của Blackberry
, bỏ nó vào một đối tượng Phone
và sau đó đưa nó trở lại Blackberry
, đối tượng gốc Blackberry
sẽ mất các biến thành viên của nó? Ví dụ:
Blackbery blackbery = new Blackberry();
blackbery.setHasKeyboard(true);
Phone phone = (Phone)blackbery;
Blackberry blackberry2 = (Blackberry)phone;
// would blackberry2 still contain its original hasKeyboard value?
boolean hasKeyBoard = blackberry2.hasKeyboard();
Bạn đã thử chưa? Điều gì đã xảy ra khi bạn làm vậy? – Kal
Tôi đã thử nó và nó hoạt động tốt –