1
resposta

Duvida curso certificação aula 6 exercício 6

Prezados boa tarde! Não entendi o exercício cujo o código está abaixo. Compreendo que com o objeto instanciado é o D e que o resultado impresso é 'b', mas o que não entendo o por quer de não dar erro em tempo de execução visto que o método y existe na classe B e foi sobre-carregado na D.(Já que a regra da sobre-escrita diz que o retorno tem que ter o mesmo tipo pelo que entendo).


abstract class B {
    void x() {
        System.out.println(y());
    }
    Object y() { return "a"; }
}
abstract class C extends B {
    abstract String y();
}
class D extends C {
    String y() { return "b"; }
}
class A {
    public static void main(String[] args) {
        D d  = (D) (C) new D();
        d.x();
    }
}
1 resposta

Oi Robson,

O motivo de isso dar certo é por conta do polimorfismo. Lembre-se que todas as classes herdam de Object, logo posso afirmar que String é um Object. Ficou claro? qualquer coisa avisa : )

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