Problema con herencia, clase abstracta y acceso a métodos.
Publicado por Javier (54 intervenciones) el 17/04/2017 11:43:06
Hola, estoy teniendo un problema en una parte de un programa que estoy realizando. El problema que tengo es que tengo una clase abstracta con métodos definidos y métodos abstractos. Luego tengo las clases que derivan de esta clase abstracta que implementan sus métodos propios.
Bien, el problema es que en mi programa principal guardo en un ArrayList<tipoClaseAbstracta> instancias de las clases que heredan de la clase abstracta y luego no puedo recuperar un elemento del ArrayList y, una vez recuperado poder acceder a los métodos propios que tiene definido la clase a la que pertenezca ese objeto.
Por ejemplo: supongamos que tengo esta clase abstracta:
Luego tengo esta clase que hereda de la clase abstracta Vehiculo
Y también tengo otra clase que hereda de la clase abstracta Vehiculo
Ahora en mi clase principal es donde introduzco objetos de las clases Coche y Camion y, al querer recuperar un elemento del ArrayList quiero poder acceder a su método particular pero no consigo cómo hacerlo.
Muchas gracias.
Bien, el problema es que en mi programa principal guardo en un ArrayList<tipoClaseAbstracta> instancias de las clases que heredan de la clase abstracta y luego no puedo recuperar un elemento del ArrayList y, una vez recuperado poder acceder a los métodos propios que tiene definido la clase a la que pertenezca ese objeto.
Por ejemplo: supongamos que tengo esta clase abstracta:
1
2
3
4
5
6
7
8
9
10
11
public abstract class Vehiculo {
String marca;
String modelo;
Vehiculo(String marca, String modelo){
this.marca = marca;
this.modelo = modelo;
}
abstract void arrancarVehiculo();
}
Luego tengo esta clase que hereda de la clase abstracta Vehiculo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Coche extends Vehiculo {
public Coche(String marca, String modelo) {
super(marca, modelo);
}
@Override
void arrancarVehiculo() {
//arrancar vehículo
}
//En esta clase defino un método
void metodoParticularCoche(){
System.out.println("Este método solo está definido en la clase Coche");
}
}
Y también tengo otra clase que hereda de la clase abstracta Vehiculo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Camion extends Vehiculo {
public Camion(String marca, String modelo) {
super(marca, modelo);
}
@Override
void arrancarVehiculo() {
//arranca el vehículo
}
//Creamos otro método particular para esta clase
void metodoParticularCamion(){
System.out.println("Este es un método particular de la clase camión");
}
}
Ahora en mi clase principal es donde introduzco objetos de las clases Coche y Camion y, al querer recuperar un elemento del ArrayList quiero poder acceder a su método particular pero no consigo cómo hacerlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.ArrayList;
public class Programa {
public static void main(String[] args) {
ArrayList<Vehiculo> lista = new ArrayList<Vehiculo>();
//Por ejemplo añado un objeto Coche
lista.add(new Coche("Seat", "León"));
//Ahora al ser un objeto Coche quiero poder acceder al método
//de su clase que era metodoParticularCoche().
//lista.get(0). Haciendo esto sólo puedo acceder a los métodos de la clase Vehiculo
//pero no se cómo poder acceder a su método particular
}
}
Muchas gracias.
Valora esta pregunta


0