2
respostas

Ciclo

class B extends C { int m(int a) { return 1; } }
class C { int m(int b) { return 3; } }
class A extends B {
    int m(String c) { return 3; }
    public static void main(String[] args) {
        System.out.println(new B().m(3));
        System.out.println(new C().m(3));
    }
}

Dessa maneira quebra o ciclo? Quais as saídas?

2 respostas

Olá Manoel,

Quebra o ciclo sim, agora A estende de B e B estende de C. Ao executar você teria as seguintes saídas:

1
3

A primeira saída é 1 pois o método m() de B sobreescreve o método m() da super classe C.

Já na segunda saída, temos o resultado 3 pois estamos invocando diretamente o método m() da classe C que devolve 3.

new B().m(3);
// Tem alguma maneira dessa chamada invocar o método da classe pai C? Retornando 3 mesmo tendo sobrescrito na classe B?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software