Duvida Polimorfismo

Esse exemplo ilustraria um bom uso de polimorfismo?

Veiculo

 package exemplos;  
   
 public class Veiculo {  
   
    public void acelerar(){  
       System.out.println("Todos os veiculos aceleram");  
    }  
    
}  

Carro

 package exemplos;  
   
 public class Carro extends Veiculo {  
   
    public void acelerar(){  
       System.out.println("Carro acelerando");  
    }  
      
 } 

Caminhao

 package exemplos;  
   
 public class Caminhao extends Veiculo {  
   
    public void acelerar(){  
       System.out.println("Caminhao acelerando");  
    }  
      
 } 

Principal

 package exemplos;  
   
 import java.util.Scanner;  
   
 public class Principal {  
   
    public static Veiculo getVeiculo(String tipo){  
       if(tipo.equals("carro")){  
          return new Carro();  
       } else if(tipo.equals("caminhao")){  
          return new Caminhao();  
       } else {  
          return new Veiculo();  
       }  
    }  
      
    public static void main(String[] args) {  
         
       Scanner teclado = new Scanner(System.in);  
       System.out.print("Digite o veiculo: ");  
       String veiculo = teclado.nextLine();  
       Veiculo v = getVeiculo(veiculo);  
       v.acelerar();  
    }  
 }

Sim é um exemplo muito bom para quem está apresendendo.
Mas…
Não sei se estou errado, mas na vida real é difícil você trabalhar com polimorfismo em cima de uma classe concreta (claro que as vezes acontece)
Mas o que eu mais vejo é quando você trabalha com uma superclasse abstrata ou uma interface, ai ele fica mais bonito ainda :smiley:
Minha opnião, mas o exemplo está muito bom.

Valeu!

Entao pra ficar bonito bastaria eu fazer

Veiculo

 package exemplos;    
     
 public abstract class Veiculo {    
     
    public abstract void acelerar();
      
 }

e retirar o new Veiculo do metodo getVeiculo. Porque nao se pode ter um objeto de uma classe abstrata

Seria isso?

Eu acho que assim ficaria muito melhor!
No seu factory basta você retornar null caso não seja nenhuma das opções.

[quote=BrunoBastos]Eu acho que assim ficaria muito melhor!
No seu factory basta você retornar null caso não seja nenhuma das opções.[/quote]

Ou:

throw new VeiculoNaoConhecidoException("Isso não é um veículo!", exception);