• Matéria: Lógica
  • Autor: testesite11
  • Perguntado 7 anos atrás

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

respondido por: reysonbarros
1

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

Perguntas similares