Я искал вокруг, и хотя я нашел некоторые ответы по какой-то причине, я не могу понять концепцию, которая, очевидно, вызывает проблему в моем коде.Полиморфизм, проблема в моей программе
У меня есть это:
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 to Friend (подкласс Contact), например, и получить доступ к специализированным методам и атрибутам подкласса.
обеспечивают супер и суб реализации классов - методы, которые вы пытаетесь определить частью суперкласса? (есть контакт с классом или интерфейсом?) –
Нет, это не так, как сказал оппонент.А Contact - это класс. – JacksOnF1re
Если ваша переменная-член является типом контакта, вы можете использовать только методы, предоставляемые классом Contact. – JacksOnF1re