我一直在環顧四周,即使我找到了一些答案,因爲某些原因,我似乎無法理解這個概念,這顯然會在我的代碼中造成問題。多態性,在我的程序上的問題
我有這樣的:
public static Contact createContact() {
Contact contact = null;
if (ContactUI.getRdb_acquaintance().isSelected()) {
contact = new Acquaintance();
} else if (ContactUI.getRdb_friend().isSelected()) {
contact = new Friend();
//contact.setStr_telMobile(ContactUI.getTxt_telMobile().getText());
} else {
contact = new Family();
//contact.setStr_telMobile(ContactUI.getTxt_telMobile().getText());
//contact.setStr_BDay(ContactUI.getTxt_BDay().getText());
}
setCommonDetails(contact);
return contact;
}
我想是能夠調用子類具體方法.setStr_telMobile
和.setStr_BDay
我一旦初始化接觸,它的子類之一,但我得到一個錯誤,我無法訪問這些方法。我在我的代碼中註釋了這些行。
我以爲我應該能夠初始化Contact類型的對象(例如Contact的子類),並且可以訪問子類專用的方法和屬性。
提供超和子類實現 - 你試圖定義超類的一部分的方法? (是聯繫一個班級或接口?) –
不,它不是,正如op說的那樣。和聯繫是一個類。 – JacksOnF1re
如果您的成員變量是聯繫人類型,則只能使用Contact類提供的方法。 – JacksOnF1re