Java - Duda de herencia

 
Vista:

Duda de herencia

Publicado por Ezequiel (15 intervenciones) el 22/01/2007 13:44:13
Hola tengo una duda, si hago:

class Gato extends Animal { }

Animal pers= new Animal();
pers= new Gato();

pers ahora es de tipo Persona o de Gato ???

Yo supongo que de Gato porq pers tendra sus atributos, o no es asi??
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:Duda de herencia

Publicado por Tom (1831 intervenciones) el 22/01/2007 14:28:11
Ni una ni otra.
pers seguirá siendo una instancia de la clase Animal.
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:Duda de herencia

Publicado por ezequiel (15 intervenciones) el 22/01/2007 14:30:07
ah, si me confundi, puse de clase Persona en vez de clase Animal
Que animal!! 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

RE:Duda de herencia

Publicado por Gonzalo (180 intervenciones) el 22/01/2007 15:17:31
Vamos a dividir el código en partes para que se vea bien:

// Declaración:
Animal a;

// Instanciación:
a = new Gato();

Le asignes lo que le asignes a la variable a (sea un Gato, un Perro o un Conejo), la variable la has declarado como de tipo Animal. Así que siempre se considera como de tipo Animal. El asunto es que un Gato _es_ un Animal, pero un Animal no tiene por qué ser un Gato.

Incluso si en un momento dado contiene un objeto de tipo Gato, si quieres usarlo como un Gato, tienes que decirlo explícitamente o convertirla explícitamente al tipo apropiado:

Supongamos que Gato tiene un método maullar() que Animal, lógicamente, no tiene.

Aunque yo sé que ahora a contiene un objeto de tipo Gato, no puedo hacer a.maullar() porque a es de tipo Animal. Lo único que podría hacer es algo como...

if (a instanceof Gato) {
// Puedo convertirla y asignarla a una variable de tipo Gato que luego uso como quiera:
Gato b = (Gato) a;
b.maullar();
// Puedo usarla como Gato convirtiéndola sobre la marcha pero explícitamente:
((Gato) a).maullar();
}


De todos modos, creo que te vendría bien mirar un buen libro o al menos un tutorial sobre programación orientada a objetos, porque es mejor que te leas una buena explicación en lugar de ir probando cosas al azar.
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:Duda de herencia

Publicado por Ezequiel (15 intervenciones) el 22/01/2007 15:21:53
Ah!! gracias por la rspuesta me sirvio mucho.
Mil gracias y vere que puedo hacer con el tema del tutorial jeje
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