Imagem de fundo

Considere o código Java a seguir:abstract class Documento...

Considere o código Java a seguir:



abstract class Documento {

public abstract String getTipo();


public String descricao() {

return "Documento do tipo: " + getTipo();

}

}

class Relatorio extends Documento {

@Override

public String getTipo() {

return "Relatório";

}

}

public class Sistema {

public static void main(String[] args) {

Documento doc = new Relatorio();

System.out.println(doc.descricao());

}

}


Sob a ótica de orientação a objetos em Java, assinale a alternativa correta a respeito do código apresentado.


A

A chamada a getTipo() em descricao() utiliza sempre a versão definida em Documento, pois doc é do tipo Documento.


B

O método descricao() não pode ser herdado pela classe Relatorio, pois classes abstratas impedem reutilização de métodos concretos.


C

O método getTipo() da classe Relatorio representa uma sobrecarga, pois redefine o comportamento declarado na classe abstrata Documento.


D

O código demonstra polimorfismo, no qual a implementação do método getTipo() da classe Relatorio é utilizada em tempo de execução, apesar da referência ser do tipo Documento.