Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Aulas 03 e 04

Olá, Vi que há tópicos perguntando sobre as diferenças entre as aulas 3 e 4 (veículos e o dos funcionários), mas continuo sem entender. Por que no exercício 3 o código compila e no 4 não? Abç

6 respostas

Você se refere a esse exercício? https://cursos.alura.com.br/course/java-heranca-interfaces-polimorfismo/task/35704

O código não compila porque está tentando chamar um método que só existe em Gerente através de uma referência do tipo Funcionario.

Funcionario f = new Gerente();

quando eu der f. só posso chamar os métodos que foram declarados em Funcionario.

Sim, é esse mesmo, mas porque neste não compilou e no exercício 4 (veículo, carro e moto) compilou?

solução!

Boa noite, Rafael. Tudo bem?

Ponto chave destes exercícios: O compilador verifica se a classe declarada tem o método que está sendo invocado. No nº 3:

Veiculo m = new Moto();
 m.liga();

Na linha de invocação do método [m.liga();] o compilador verifica se a classe Veiculo tem o método liga.

  • Como a resposta é Sim -> Top, segue a vida kkk :D
  • Se a resposta fosse Não -> Que pena, não compila :/

No nº 4 a classe Funcionario não tem o método autentica, por isso não compila.

Sempre lembre: na hora de compilar temos que ver se a referência tem o método, na hora de executar é usado o método do tipo instânciado (quando tiver).

Veiculo m = new Moto(); 
m.liga()
  • Ao compilar verifica se Veiculo tem o método.
  • Ao executar usa o método mais específico, ou seja, o da instância (se tiver, se não usa da classe superior).

Espero ter ajudado ;)

Boa noite, Rafael! Como vai?

Isso ocorre pois no caso do exercício 4 onde são utilizados veículo, carro e moto, apenas é perguntado sobre que tipo a referência pode assumir! Ou seja, é um exercício cujo objetivo é diferente do outro exercício que não compila!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Dúvida sanada Rafael?

Sim! Muito obrigado a todos! Abraço!