Java - Tomar metodos de una subclase

 
Vista:
sin imagen de perfil

Tomar metodos de una subclase

Publicado por niko (11 intervenciones) el 17/08/2007 12:10:56
Hola a todos.

Tengo la clase 1:

public class Abstract Clase1(){

public abstract void metodo1();
}

y la subclase:

public class Clase2() extends Clase1{

public int metodo2();
}

Ahora lo que necesito saber es como hago, si es que se puede,
para acceder desde la Clase1 al metodo2 de la Clase2.

Algo mas o menos asi:

Clase1 [] C1 = new Clase1[5];
C1[1]=Clase2();
int var= C1[1]. // aqui le deseo asignar en metodo1 de la Clase1 que esta en C1[1] pero cuando pongo el punto solo me muestra el metodo de la clase1. de la Clase2 no me muestra nada

O sea, que debo hacer para poder acceder al metodo2 desde la clase1.
Espero haberme explicado bien y gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tomar metodos de una subclase

Publicado por Beita (63 intervenciones) el 17/08/2007 12:18:11
Creo que tienes que declarar en la Clase2 también el método1, aunque la clase1 es abstracta y el método1 también lo es, para utilizarlo las clases "hijas" deben implementarlo. Revisa los conceptos de herencia.
Creo que también podrías hacer algo como (Clase1)c2.metodo1, hacer un cast ya que serían tipos compatibles aunque de esto no estoy muy segura.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tomar metodos de una subclase

Publicado por Victor Oliva (66 intervenciones) el 17/08/2007 17:01:24
Hola Niko,

Efectivamente lo que dice Beita es correcto y tambien en lo que no esta segura.
Debes hacer un cast a objeto del arreglo Clase1 a Clase2:

((Clase2)arr[1]).met2();

Ahora bien, si eso efectivamente se puede hacer, no es lo correcto. Lo que es correcto que debes hacer es implementar al metodo1 en clase2. Para que sigas de forma correcta el concepto de orientacion a Objeto.

Algo asi:

En Clase2 colocas este codigo:

public int met1(){
return super.met1();
}

La palabra super hace referencia a la Clase Padre, en este caso hace referencia a Clase1.

Espero que te sirva el comentario.

Victor Oliva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar