elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Objeto de clase heredada en super clase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Objeto de clase heredada en super clase  (Leído 621 veces)
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Objeto de clase heredada en super clase
« en: 16 Mayo 2015, 23:21 »

Muy buenas, hoy vengo con una pregunta un poco noob a mi parecer, pero tengo la duda desde hace tiempo y quisiera aclararlo ya :P

La teoría dice que se puede guardar un objeto de la clase "hijo" en una variable declarada como el "padre", pero no al revés.

Mi duda surge al pensar que si guardas el "hijo" en una variable "padre" los atributos definidos en la clase "hijo" se perderán ¿cierto?

En cambio, una clase "hijo" tiene como mínimo, todos los atributos de la clase "padre" así que un "padre" cabría perfectamente en un objeto declarado como "hijo" ¿No?

¿Por que no es así, entonces?

Un abrazo y espero haberme explicado bien :P


En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Objeto de clase heredada en super clase
« Respuesta #1 en: 18 Mayo 2015, 21:21 »

Hola:

Una variable en java no es más que una dirección de memoria donde está guardado un objeto.

Si haces new Hijo(), en memoria tienes un Hijo. Si la variable es de tipo padre o de tipo hijo da igual, el objetio en memoria es un Hijo.

Si asiganas variableTipoPadre = new Hijo(), no se pierde nada de lo que tenga Hijo, unicamente no puedes acceder a ello, porque variableTipoPadre no tiene acceso a los métodos/atributos de hijo (no sabe en qué dirección de memoria están guardados).

Puedes recuperar el hijo así

variableTipoHijo = (Hijo)variableTipoPadre

esto se conoce como "cast" y es valido siempre que en memoria haya un Hijo. Si no lo hay, dará error al ejecutar.

No puedes guardar un padre en un hijo porque un new Padre() es un objeto padre en memoria que no tiene métodos ni atributos de hijo. Si intentas esto

variableTipoHijo = new Padre()

da error, porque faltan todas las cosas de específicas de Hijo. variableTipoHijo.metodoDeHijo() estaría sin definir, en memoria no está ese método, puesto que en memoria hay un Padre.

Se bueno.


En línea

Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Objeto de clase heredada en super clase
« Respuesta #2 en: 18 Mayo 2015, 22:21 »

Aaah de acuerdo, ahora lo entiendo ;)

Gracias ¡!
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines