

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
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 chamada a getTipo() em descricao() utiliza sempre a versão definida em Documento, pois doc é do tipo Documento.
O método descricao() não pode ser herdado pela classe Relatorio, pois classes abstratas impedem reutilização de métodos concretos.
O método getTipo() da classe Relatorio representa uma sobrecarga, pois redefine o comportamento declarado na classe abstrata Documento.
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.