Здрастуйте, шановні джаварашівці. Напевно, кожному, хто був на співбесіді ставабо питання про поліморфізм. Так ось, цікавить вашу відповідь та оцінка вашої відповіді від інтерв'юера. У мене було дві міні-співбесіди, на яких питали про поліморфізм і на кожному з них інтерв'єр був не в захваті від моєї відповіді. Якщо коротко, то моя відповідь зводилася до оверрайдингу та присвоєння заслання батьківського класу об'єкт дочірнього класу. Якось так:
class Parent{
void saySomething(){
System.out.println("Parent!");
}
}
class Child1 extends Parent{
@Override
void saySomething(){
System.out.println("Child1!");
}
}
class Child2 extends Parent{
@Override
void saySomething(){
System.out.println("Child2!");
}
}
class Test{
public static void main(String[] args){
Parent p1 = new Parent();
Parent p2 = new Child1();
Parent p3 = new Child2();
p1.saySomething();
p2.saySomething();
p3.saySomething();
}
}
---------------
Output:
Parent!
Child1!
Child2!
На сайті Oracle все приблизно так і написано. Іван Головач каже, що поліморфізм у Java реалізований за допомогою успадкування (те, що я показав у прикладі) та за допомогою дженериків. Так ось, де ж істина і як відповідати на співбесіді? Невдовзі на мене чекає важлива співбесіда і не хочеться знову облаштуватися на цьому, здавалося б, елементарному питанні.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ