Упражнение по полиморфизму JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Упражнение по полиморфизму Java

Сообщение Anonymous »

Может кто-нибудь объяснить, как компилятор/среда выполнения запускает
соответствующий метод в этом примере?
Есть 6 классов и метод void m(/* ... */) с разными параметрами.
Я знаю, что компилятор анализирует
объявленные типы.
/>Выход всегда «M» для среднего класса.

public class All {}
public class Most extends All {}
public class Special extends Most {}

public class Top {
public void m( All p ) { System.out.println("A"); }
}
public class Middle extends Top {
public void m( All p ) { System.out.println("M"); }
public void m( Special p ) { System.out.println("L"); }
}
public class Bottom extends Middle {
public void m( Most p ) { System.out.println("V"); }
public void m( Special p ) { System.out.println("X"); }
}

public class Main {

public static void main(String[] args) {
All all = new All();
Most most = new Most();
Special special = new Special();

Top x = new Middle();
Top y = new Bottom();
Middle z = new Bottom();

x.m( most ); // Output is M
x.m( special ); // Output is M
y.m( all ); // Output is M
y.m( special ); // Output is M
z.m( all ); // Output is M
z.m( most ); // Output is M
}
}


Подробнее здесь: https://stackoverflow.com/questions/516 ... m-exercise
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»