Duvida Polimorfismo

4 respostas
D

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();  
    }  
 }

4 Respostas

BrunoBastosPJ

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!

D

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?

BrunoBastosPJ

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

G

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

Ou:

throw new VeiculoNaoConhecidoException("Isso não é um veículo!", exception);
Criado 9 de julho de 2008
Ultima resposta 10 de jul. de 2008
Respostas 4
Participantes 3