Java - Orientacion Objeto

 
Vista:

Orientacion Objeto

Publicado por ezequiel (15 intervenciones) el 20/01/2007 21:23:18
Hola tengo una duda sobre polimorfismo
voy a tratar de ser claro, expongo un ejemplo para explicar:
clase Animal
Subclase Conejo
Subclase Gato

Debo crear un objeto q instancie Animal para hacer algunas cosas
Ese objeto puedo transformarlo, q sea instancia de Conejo?
Lo hice pero si quiero invocar un metodo de alguna subclase
me invoca al de la clase padre. Si borro el d clase padre me salta error

otro dato los metodos de subclase no devuelven mismo tipo de valor
o sea:
public int correr() de Conejo {}
public String correr() de Gato {}

Alguien puede ayudarme??
o tirarme alguna web con ejemplos??
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
sin imagen de perfil

RE:Orientacion Objeto

Publicado por chuidiang (950 intervenciones) el 20/01/2007 21:45:58
Hola:

La forma de hacer lo que pretendes es instanciar Conejo o Gato. La ventaja de la herencia es que puedes meterlos en una variable de tipo Animal. Si haces esto

Animal a = new Gato();
Animal b = new Conejo();

entonces las llamadas

a.correr();
b.correr();

llama a correr() de Gato() y Conejo(), aunque la variable sea de tipo Animal. También puedes hacer esto

Animal [] array = new Animal[2];
array[0] = new Conejo();
array[1] = new Gato();
for (int i=0;i<array.length;i++)
array[i].correr();

y se llamará al correr() de cada bicho concreto.

Se bueno.
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:Orientacion Objeto

Publicado por lucho (32 intervenciones) el 20/01/2007 22:36:58
Es decir, lo que vos estabas pretendiendo hacer era una especie de Casteo. Y el casteo se puede dar en dos direcciones, de la clase padre a la hijo y de la clase hijo a la padre.
Una de las dos funciona siempre: el casteo hacia arriba. Pues tenés como resultado un Objeto con menos comportamientos. Ahora el casteo para abajo, no funciona por el simple hecho que la herencia implica extensión de una clase padre, con respecto al comportamiento. Entonces si vos convertis un Objeto instanciado de Animal, y lo querés castear a Gato, hay muchas cosas que sabe hacer el Gato, que el Animal no las sabe. O incluso muchas propiedades, por ejemplo, el gato tiene uñas y no todos los animales tienen uñas.
Me explico??
Igual lo que dice Chiudiang está perfecto.
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:Orientacion Objeto

Publicado por Ezequiel (15 intervenciones) el 20/01/2007 22:05:23
Me queda claro pero tengo el problema que
en metodos correr() de subclase devuelven distintos valores
no se que debo poner en clase padre
Si devolvieran mismo valor no habria problema asi como hago??
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:Orientacion Objeto

Publicado por lucho (32 intervenciones) el 20/01/2007 22:42:25
Yo lo veo así:
Tranquilamente el metodo correr, podría no existir en la Clase Animal, decir, gracias a la herencia, vas a llegar a hacer los metodos de las subclases. O sea lo podrías poner el método en la clase Animal, pero al fin y al cabo nunca le decis a un animal que corra, o se lo decís a un Gato o a un Conejo, y si los dos tienen el método implementado, nunca vas a llegar a la clase animal.
Porque la llamada a un metodo de una clase funciona así...
si vos a un gato le decis correr... Primero busca el método en su clase y después sube.
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:Orientacion Objeto

Publicado por Ezequiel (15 intervenciones) el 21/01/2007 15:56:10
Bueno lucho gracias x contestarme, si tenia entendido que era asi.
Al final mi problema era q no invocaba al metodo que adecuado,
asiq tratare de resolver ese problema ahora.
Muchas Gracias
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