public class A {
public void f1(String str) {
System.out.println("A.f1(String)");
this.f1(1, str);
}
public void f1(int i, String str) {
System.out.println("A.f1(int, String)");
}
}
public class B extends A {
@Override
public void f1(String str) {
System.out.println("B.f1(String)");
super.f1(str);
}
@Override
public void f1(int i, String str) {
System.out.println("B.f1(int, String)");
super.f1(i, str);
}
}
public class Main {
public static void main(String[] args) {
B b = new B();
b.f1("Hello");
}
}
Я ищу, чтобы этот код вывел:
B.f1(String)
A.f1(String)
A.f1(int, String)
Все же я получаю:
B.f1(String)
A.f1(String)
B.f1(int, String)
A.f1(int, String)
Я понимаю, что в контексте B "this" в A.f1 (String) является экземпляром B.
У меня есть возможность сделать цепочку новых B1 (). F1 (String) -> (A's) f1 (String) -> (A's) f1 (int, String)?
Это теоретический вопрос, практически решение, очевидно, было бы в A для реализации закрытой функции, которую вызовут как f1 (String), так и f1 (int, String).
Спасибо,
Максим.