@darlan_machado, vejo que você usou o instanceof , coisa rara de se ver
R
rmendes081 like
e que deve ser raro …
L
LuanFroehlich
Porque?
R
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.
S
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.