Lógica, perguntado por testesite11, 10 meses 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.

Soluções para a tarefa

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 interessantes