@darlan_machado, vejo que você usou o instanceof , coisa rara de se ver
rmendes081 like
e que deve ser raro …
LuanFroehlich
Porque?
rmendes083 likes
É uma má prática. Comportamentos que são específicos de uma determinada classe devem ser encapsulados dentro da própria classe, diminuindo o acoplamento entre o cliente de um tipo abstrato e as implementações desse tipo. É muito comum ouvir o argumento de que as 2 maneiras “funcionam”. Mas o problema primordial em eng. de software é como acrescentar novo comportamento causando o mínimo de impacto no que já está pronto. Nesse sentido, se você seguir a solução do @staroski por exemplo, e quiser criar um novo veiculo, basta criar uma nova classe e passar o objeto como parâmetro para classes que dependem de Veiculo, e pronto. Do contrário, se você adota uma solução baseada em instanceof você tem que alterar cada um dos pontos que utiliza as classes concretas.
staroski1 like
Só pra complementar, geralmente quando temos situações onde são necessários muitos instanceof costuma valer a pena repensar a estrutura de classes para utilizar o padrão de projeto Visitor.