Как использовать метод класса-наследника, которого нет в классе-родителе?
Почему когда я пытаюсь у класса - наследника вызвать метод, которого нет в классе-родителе вылезает ошибка? При создании объекта нужно использовать полиморфизм.
public class Main{
public static void main(String[] args) {
Person man = new Man(); //polymorphism
man.sayHello(); //hello
man.doSomething(); //error
}
}
class Person {
void sayHello(){
System.out.println("hello!");
}
}
class Man extends Person{
void doSomething(){
System.out.println("it is doing something");
}
}
Ответы (2 шт):
Потому что в классе родителя нет этого метода. Ты создаешь переменную типа Person в которую кладешь объект Man. Person знает только унаследованные методы
Просто создай метод в Person
void doSomething(){
System.out.println("AAAAAAAAAA");
}
И посмотри тогда , что напечатает man.doSomething()
Ошибка возникает по причине того что у класса-родителя Person нет метода doSomething()
man.doSomething(); //error
}
Если непонятно как работает наследование, то попробуй объявить переменную типа класса-родителя.
Man man = new Man();
Для того чтобы работал полиморфизм, у обоих классов должен быть объявлен метод с одинаковой сигнатурой. В противном случае можно вызвать метод класса-родителя после приведения типа, но это не будет полиморфизмом.
Чтобы лучше понять что такое полиморфизм рекомендую почитать Как на практике применяется полиморфизм?.