Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con polimorfismo, java

Estas en el tema de Problema con polimorfismo, java en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/05/2007, 12:15
Avatar de manurodri189  
Fecha de Ingreso: octubre-2006
Ubicación: Toledo
Mensajes: 76
Antigüedad: 17 años, 6 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
  #2 (permalink)  
Antiguo 15/05/2007, 22:16
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Problema con polimorfismo, java

En primer lugar, sería bueno que nos comentaras donde están los errores y qué te dice el compilador sobre los mismos.

Los errores están en:

Objeto.seguridad();
Objeto.CL();
Objeto.AN();
System.out.println("Estilo: "+Objeto.getEstilo());
System.out.println("Uso: "+Objeto.getUso());


El error es el mismo en todos los casos. La variable Objeto está declarada como Vehiculo, y los métodos seguridad, CL, AN, getEstilo y getUso no son parte de la clase Vehiculo, son parte de subclases de Vehiculo. Si quieres acceder a los métodos de la subclase específica, deberías declara la variable del tipo correcto (de la clase que contiene el método al cual querés llamar).
  #3 (permalink)  
Antiguo 15/05/2007, 22:16
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Problema con polimorfismo, java

Me olvidaba, existe un foro específica de Java, haz tus preguntas de Java ahí.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:19.