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ê está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!