Chamando a Função Substituída da Classe Base do Método da Classe Base

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");
    }
}

Eu estou procurando que esse código produziria:

B.f1(String)
A.f1(String)
A.f1(int, String)

No entanto, estou recebendo:

B.f1(String)
A.f1(String)
B.f1(int, String)
A.f1(int, String)

Eu entendo que no contexto de B "this" em A.f1 (String) é a instância de B. Eu tenho a opção de fazer a cadeia B1 (). F1 (String) -> (A's) f1 (String) -> (A's) f1 (int, String)?

Esta é uma questão teórica, praticamente a solução estaria obviamente em A para implementar uma função privada que f1 (String) e f1 (int, String) chamariam.

Obrigado,
Máxima.

questionAnswers(4)

yourAnswerToTheQuestion