public class Solution {
public static void main(String[] s) {
A a = new C();
a.method2();
}
public static class A {
private void method1() {
System.out.println("A class, method1");
}
public void method2() {
System.out.println("A class, method2");
method1();
}
}
public static class B extends A {
public void method1() {
super.method2();
System.out.println("B class, method1");
}
public void method2() {
System.out.println("B class, method2");
}
}
public static class C extends B {
public void method1() {
System.out.println("C class, method1");
}
public void method2() {
System.out.println("C class, method2");
super.method1();
}
}
}
Станислав
26 уровень
Почему делая сужения объекта С до А, то я так понимаю должны выполнятся только method2() класса A, а получается выполняется method2() класса С
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас Пасинков Software Developer в Zipy Master
6 января 2018, 00:14
тип ссылки определяет доступные методы для вызова по такой ссылке.
какой именно метод будет вызван - зависит уже от того, какой объект лежит в ней.
поэтому без разницы какой тип ссылки у вас будет:
во всех трех случаях будет вызван метод из класса С (потому что во всех тех переменных лежат объекты именно такого класса) +1