Java приведение к суперклассу и вызов метода перегрузки

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

Программа вернет 3, а я ожидал 0. Почему первое приведение в методе f ничего не делает, а второе работает? Это потому, что в классах A и B методы met перегружены и, следовательно, используется статическая привязка?

Ответы на вопрос(1)

Ваш ответ на вопрос