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ç
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ç
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?
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.
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()
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!