Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Herencia a nivel conceptual

Buen día Instructor Diego Arguelles.

Me dirijo a usted con mucho respeto y admiración a la forma de pedagógica de enseñar.

En su curso de Java Entendiendo la Orientacion a Objetos usted aborda el tema con mucha prestación y maestría en conceptos fundamentales y me han servido mucho para entender este mundo de desarrollo. Sin embargo en esta ocasión quiero pedirle de favor me explique como funciona a nivel de memoria la herencia entre objetos.

En la imagen adjunta usted explicaba como podemos relacionar un objeto con otro a traves de la creación de un atributo Cliente tirular = new Cliente() en la clase cuenta y esta crea un valor de referencia hacia la clase cliente almacenada en titular. Esto lo entiendo a prefección gracias a su ejemplo y todo está bien.

Ahora en concreto mi solicitud es: ¿Puede explicarme de esta manera qué ocurre cuando utilzamos extends o herencia entre clases?

Muchas personas explican pero con los clasicos ejemplos de sobreescribir un método o acceder a atributos, pero yo quisiera entender a nivel conceptual e interno en memoria.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Es más antes yo creía que esto pasaba al momento de enviar un objeto, y cuando vi su explicación y forma de enseñar se abrió mi mente en gran manera. Por ello quiero de favor me explique ¿Qué sucede o cómo se ve la herencia explicado de esta forma?

Gracias de antemano por su ayuda.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

2 respuestas

¡Hola Fidel!

Entiendo perfectamente tu interés en comprender cómo funciona la herencia entre clases a nivel conceptual e interno en memoria. La herencia en Java es un concepto fundamental que nos permite crear una jerarquía de clases, donde una clase hija hereda atributos y métodos de una clase padre.

Cuando utilizamos la palabra clave "extends" para establecer una relación de herencia entre dos clases, lo que sucede a nivel conceptual es que la clase hija adquiere todos los atributos y métodos de la clase padre. Esto significa que la clase hija puede acceder a los atributos y métodos heredados como si fueran propios, lo que facilita la reutilización de código y la creación de una jerarquía de clases bien estructurada.

A nivel interno en memoria, cuando creamos un objeto de la clase hija, se reserva espacio en la memoria para todos los atributos heredados de la clase padre, además de los propios de la clase hija. Esto permite que el objeto de la clase hija pueda acceder y utilizar tanto los atributos como los métodos heredados de la clase padre.

En resumen, la herencia a nivel conceptual nos permite establecer una relación de "es un" entre las clases, mientras que a nivel interno en memoria, se reserva espacio para los atributos heredados, lo que permite que la clase hija herede y utilice el comportamiento y los datos de la clase padre.

Espero que esta explicación te ayude a comprender mejor el funcionamiento de la herencia en Java. Si tienes alguna otra pregunta, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Hola Génesis

Gracias primeramente por tu esfuerzo y disposición de querer solventar mi inquietud, pero aún no está claro, y pues quisiera saber como es que se relacionan los objetos internamente ejemplificado de forma gráfica y si existe una manera de diseñar el sistema anivel lógico funcional de clases para luego proceder a programar, pero no hablo de UML, sino de aprender analizar y crear el sistema a nivel de clases por ejemplo así como haces una base de datos .

Pero el punto inicial aquí es ¿Qué hace extends a nivel de memoria con el objeto heredado?

Cito un ejemplo: si tengo la clase Cuenta y Cliente

|Cuenta| |Cliente| Int nCuenta String nombre double Monto String documento Cliente titular = new Cliente

Cuando cree un objeto cuenta podré por medio de la instanciación llegar al objeto Cliente. Pero en el caso de "extends" llego al otro objeto ¿Y eso es siempre instanciar el objeto? ¿Me explico cuál es mi inquietud?

Cuenta miCuenta = new Cuenta() miCuenta.titular.nombre = "Steven"