É impossível você dizer que o Veículo pode fazer a troca de óleo, já que essa função está apenas atrelada ao Automóvel. Então, você pode fazer três coisas:
Aplicar polimorfismo (transformar o Veículo em Automóvel).
Criar dois métodos, um para o Automóvel e outro para a Bicicleta.
Aplicar a função de trocar óleo na classe Veículo e não na classe Automóvel
Porém, todos as classes que herdarão de Veículo poderão ter essa função.
Bom te um conceito em progamação que polimorfismo quando você for instaciar a classe veiculo para o metodo você pode fazer assim: Veiculo v = new Automovel();
Por que veiculo é um automóvel.
Então fui ai que travei e não consegui mais avançar, porque na questão pede o seguinte
• manutencao(Veiculo v)que recebe como parâmetro um objeto do tipo veiculo e chama os métodos definidos na classe veiculo: • listarVerificacoes() • ajustar() • limpar() • se o veiculo for Automóvel deve também chamar o método mudarOleo() .
pensei que em fazer uma interface de veiculo, mas na classe oficina teria que ter um método de manutenção para automóvel e outro para bicicleta
Automovel aut = new Automovel(); //Cria um objeto de Automovel que é um Veiculo
Oficina of = new Oficina(); //Cria a instância da oficina
of.getManutencao(aut); //Passa o automóvel como parâmetro do método getManutenção
Afinal, o instanceof, uma palavra reservada do java, tem essa finalidade.
Agora, se é realmente o ideal fazer uso dessa keyword, aí são outros five hundred.
Eu nunca ouvi falar dessa keyword kkkkkkk
Mas obrigado por compartilhar, até me ajudou a aprender também.
Vou procurar mais sobre ela e dizer se é uma boa prática de programação ou não
Basicamente, é a keyword que permite identificar a qual tipo de classe uma variável pertence.
Porém, como tudo na vida, existe um (ou mais) porém:
public class Foo{}
public class Boo extends Foo{}
Boo b = new Boo();
if(b instanceof Foo) {
System.out.println("É um Foo");
}
if(b instanceof Boo) {
System.out.println("É um Boo");
}
E ainda
if(b instanceof Object) {
System.out.println("É um Object");
}
Ele passa em todos os ifs. Ou seja, precisa tomar muito cuidado com o uso deste validador