Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2007, 12:15
Avatar de manurodri189
manurodri189
 
Fecha de Ingreso: octubre-2006
Ubicación: Toledo
Mensajes: 76
Antigüedad: 18 años, 5 meses
Puntos: 1
Problema con polimorfismo, java

Hola he creado un programita, con herencia, tengo que usar polimorfismo, osea crear objetos de la clase padre e instanciarlos con las clases hijas, pero resulta que al ultilizar los metodos de las clases hijas no compila, que puede pasar? Aqui os dejo el codigo a ver si le echais un vistazo. Gracias

Código:
import java.io.*;
class Vehiculo{
  protected String fabricante;
  protected String modelo;
  protected int año;
  protected double kilometraje;
  
  public Vehiculo(String fabricante, String modelo, int año, double kilometraje){
    this.fabricante=fabricante;
    this.modelo=modelo;
    this.año=año;
    this.kilometraje=kilometraje;
  }

  public String getFabricante(){
    return fabricante;
  }

  public String getModelo(){
    return modelo;
  }

  public int getAño(){
    return año;
  }

  public double getKilometraje(){
    return kilometraje;
  }

}

interface CapacidadLimite{
  int an=5;
  int av=7;
  int c=3;

}

class Motocicleta extends Vehiculo{

  private String uso;

  public Motocicleta(String fabricante, String modelo, int año, double kilometraje, String uso){
    super(fabricante, modelo, año, kilometraje);
    this.uso=uso;
  }
  
  public String getUso(){
    return uso;
  }

}

class Automovil extends Vehiculo implements CapacidadLimite{


  private String estilo;
   public Automovil(String fabricante, String modelo, int año, double kilometraje, String estilo){
    super(fabricante, modelo, año, kilometraje);
    this.estilo=estilo;
  }

  public String getEstilo(){
    return estilo;
  }
  
  public void AN(){
    System.out.println("La capacidad limite para un automovil normal es "+an+" pasajeros");
  }

  public void AV(){
    System.out.println("La capacidad limite para un automovil vans es "+av+" pasajeros");
  }


}

class Camion extends Vehiculo implements CapacidadLimite{

  private int remolques;
  private boolean pasajeros;

  public Camion(String fabricante, String modelo, int año, double kilometraje, int remolques, boolean pasajeros){
    super(fabricante, modelo, año, kilometraje);
    this.remolques=remolques;
    this.pasajeros=pasajeros;
  }


  public int getRemolques(){
    return remolques;
  }

  public boolean getPasajeros(){
    return pasajeros;
  }

  public void seguridad(){
    if(pasajeros==true){
      System.out.println("La seguridad de este camion es baja.");
    }
    else{
      System.out.println("La seguridad de este camion es alta.");
    }
  }
  
  public void CL(){
    System.out.println("La capacidad limite del camion es "+c+" pasajeros");
  }
    
}


class Menu{

  public static void main(String[]args)throws IOException{
    BufferedReader leer=new BufferedReader(new InputStreamReader (System.in));
    Vehiculo Objeto=null;
    //Vehiculo Objeto;
    //Objeto = V1;
    
    System.out.println("Introduce 'm' para motocicleta, 'a' para automovil, 'c' para camion: ");
    char c;
    c=leer.readLine().charAt(0);

    switch(c){

      case 'm':
        Objeto=new Motocicleta("Derbi","Varial", 2001, 5000, "Utilizada en urbano");
        System.out.println("Fabricante: "+Objeto.getFabricante());
        System.out.println("Modelo: "+Objeto.getModelo());
        System.out.println("Año de fabricacion: "+Objeto.getAño());
        System.out.println("Kilometraje: "+Objeto.getKilometraje());
        System.out.println("Uso: "+Objeto.getUso());
        
        break;

      case 'a':
        Objeto=new Automovil("BMV", "V12", 2000, 50000,"Deportivo");
        System.out.println("Fabricante: "+Objeto.getFabricante());
        System.out.println("Modelo: "+Objeto.getModelo());
        System.out.println("Año de fabricacion: "+Objeto.getAño());
        System.out.println("Kilometraje: "+Objeto.getKilometraje());
        System.out.println("Estilo: "+Objeto.getEstilo());

        System.out.println("Si el coche es vans introduce el caracter 's' de lo contrario introduce 'n': ");
        char a= leer.readLine().charAt(0);
        if(a=='s'){
          Objeto.AV();
        }
        else{
          Objeto.AN();
        }
        break;

      case 'c':
        int n;
        boolean b=true;
        System.out.println("Indique los pasajeros que van a viajar en el camion: ");
        n =Integer.parseInt(leer.readLine());
        if(a<3){
          b=false;
        }
        Objeto=new Camion("Mercedes", "r59", 1991, 100000, 2,b);
        System.out.println("Fabricante: "+Objeto.getFabricante());
        System.out.println("Modelo: "+Objeto.getModelo());
        System.out.println("Año de fabricacion: "+Objeto.getAño());
        System.out.println("Kilometraje: "+Objeto.getKilometraje());
        System.out.println("Nº de remolques: "+Objeto.getRemolques());
        Objeto.seguridad();
        Objeto.CL();
        
        break;
      
    }
  }
  
}
Salu2