Java cast to superclass y método de sobrecarga de llamadas

abstract class A {

    int met(A a) {
        return 0;
    }

    int met(B b) {
        return 1;
    }

    int met(C c) {
        return 2;
    }
}

class B extends A {

    int met(A a) {
        return 3;
    }

    int met(B b) {
        return 4;
    }

    int met(C c) {
        return 5;
    }
}

class C extends B {
    int f() {
        return ((A)this).met((A)this);
    }
}

public class teste {
    public static void main(String args[]) {
        C x = new C();
        System.out.println(x.f());
    }
}

El programa devolverá 3 y esperaba 0. ¿Por qué el primer elenco en el método f no hace nada y el segundo funciona? ¿Es porque en las clases A y B los métodos cumplidos están sobrecargados y, por lo tanto, se utiliza el enlace estático?

Respuestas a la pregunta(1)

Su respuesta a la pregunta