No uso de herança em Java, todas as classes em Java herdam da classe especial "Object". Sendo assim, tudo em Java está trabalhando com herança.
Observe o código abaixo.
Aviao.java
1 public class Aviao {
2 public void voar(){
3 System.out.println("Voar");
4 }
5 }
Boeing.java
1 public final class Boeing extends Aviao {
2 public void voar(){
3 super.voar();
4 }
5 }
Aeroporto.java
1 public class Aeroporto {
2 public static void main(String[] args) {
3 Boeing b = new Boeing();
4 b.voar();
5 }
6 }
Considerando o texto e o código acima, assinale a alternativa correta.
Alternativas
Alternativa 1:
A classe "Boeing" não pode estender de "Aviao", pois ela é final.
Alternativa 2:
Ao ser executado o programa, será impresso "Voar" na saída do console.
Alternativa 3:
A classe "Boeing" precisa ter uma instância da classe "Aviao" dentro dela.
Alternativa 4:
Ao ser executado o programa, não será impresso nada na saída do console.
Alternativa 5:
O código gera um erro, pois o método "voar" da classe "Aviao" não tem corpo.
Respostas
Resposta:
Alternativa 2
Explicação:
Baseado nos casos de teste que realizei seguem as justificativas apresentadas:
Alternativa 1: A classe "Boeing" não pode estender de "Aviao", pois ela é final.
Justificativa: ERRADO. Uma classe final pode ser instanciada, mas não pode ser derivada, isto é, não pode ser superclasse de nenhuma subclasse. Como a classe Aviao NÃO é final, logo Boeing PODE SIM estender dessa classe.
----------------------------------------------------------------------------------------------------------
Alternativa 2: Ao ser executado o programa, será impresso "Voar" na saída do console.
Justificativa: CORRETO. Ao compilar e executar a classe Aeroporto é instanciado um objeto do tipo Boeing e logo após é executado o método voar da superclasse de BOEING que é a classe Aviao. No corpo desse método a class System é invocada juntamente com a stream out e o método println que irá imprimir na console a mensagem "Voar".
-----------------------------------------------------------------------------------------------------------
Alternativa 3: A classe "Boeing" precisa ter uma instância da classe "Aviao" dentro dela.
Justificativa: ERRADO. Visto que a classe Boeing herda da classe Aviao então automaticamente seus métodos são acessados pelo super().
-----------------------------------------------------------------------------------------------------------
Alternativa 4: Ao ser executado o programa, não será impresso nada na saída do console.
Justificativa: ERRADO. A alternativa 2 invalida essa alternativa.
-----------------------------------------------------------------------------------------------------------
Link de explicação(vídeo):
https://drive.google.com/open?id=1c1OgW1rDaoP6ThMj31ZJUTlDTkD9vapk