Explorando la herencia en el lenguaje de programación Java

Explorando la herencia en el lenguaje de programación Java

La herencia es uno de los conceptos centrales de la programación orientada a objetos. En programación, la palabra herencia representa una relación en la que una clase secundaria asume el estado y comportamiento de una clase principal.





El propósito de la herencia en el desarrollo de software es facilitar la reutilización de software seguro y confiable. Uno de los principales beneficios de usar la herencia es que elimina el código redundante en sus programas.





¿Puedes ver a tus suscriptores en youtube?

Cómo funciona la herencia

La idea detrás de la herencia es que muchas clases u objetos tienen el mismo conjunto de atributos y métodos. Por lo tanto, con el espíritu de producir software confiable, las nuevas clases ahora pueden extraerse de clases relacionadas preexistentes y, si es necesario, expandirse en estados y comportamientos existentes.





Un ejemplo del mundo real de cómo funciona la herencia sería considerar las frutas. Esta es una etiqueta amplia que sirve para encapsular una variedad de elementos diferentes.

Una manzana es una fruta y también lo es una naranja. Sin embargo, una naranja no es una manzana, por lo que no tendría frutas como uno de sus artículos de stock si tuviera una tienda. Quizás podría tener una sección de frutas en su inventario, y debajo de esa sección, tendría artículos más específicos como manzanas y naranjas.



Así es como funciona la herencia.

Uso de la herencia en Java

La herencia se puede utilizar en cualquier lenguaje de programación que utilice el paradigma de programación orientada a objetos. Sin embargo, la forma exacta en que se utiliza la herencia depende del lenguaje de programación específico.





Por ejemplo, C ++ también es un lenguaje de programación orientado a objetos . C ++ admite lo que se conoce como herencia múltiple, mientras que Java solo admite herencia única.

Lo que esto significa es que en Java una clase principal puede tener muchas clases secundarias, pero cada clase secundaria solo puede tener una única clase principal (herencia única). Sin embargo, hay una forma de lograr una herencia múltiple indirecta en Java, creando una relación de abuelo, padre e hijo.





Creación de la clase principal en Java

El proceso de seleccionar una clase principal de un documento de requisitos de software se conoce como análisis orientado a objetos. Durante este proceso, la frase es a se utiliza a menudo para identificar posibles relaciones de herencia. Basándose en nuestro ejemplo anterior, debería poder ver que la fruta sería nuestra clase principal.

Ejemplo de clase principal de fruta

|_+_|

Uno de los aspectos más notables de la clase principal anterior es el modificador de acceso que se usa con cada declaración de variable. El modificador de acceso protegido es ideal para usar en clases principales porque evita que las clases que no son secundarias obtengan acceso a los atributos de datos de la clase principal.

Más abajo en el código, se le presentan los constructores, captadores y definidores que son bloques de construcción generales para cualquier clase de Java. Finalmente, se le presentan dos métodos (jugo y comer) que se crean en la clase principal de nuestro programa porque son universales para todas las frutas: todas las frutas se pueden comer y exprimir.

Creación de clases secundarias en Java

Las clases secundarias generalmente se denominan clases especializadas o derivadas porque heredan el estado y el comportamiento de un padre y, a menudo, personalizan estos atributos para que sean más específicos.

Continuando con nuestro ejemplo, debería poder ver por qué el naranja sería una clase infantil adecuada de la clase de frutas anterior.

Ejemplo de clase infantil naranja

|_+_|

Existe una diferencia entre el aspecto de una declaración de clase Java normal y lo que tenemos en nuestro código anterior. La palabra clave extiende es lo que se usa en Java para hacer posible la herencia.

En nuestro ejemplo anterior, la clase secundaria (naranja) extiende la clase principal (fruta). Por lo tanto, la clase naranja ahora puede acceder y modificar el estado y el comportamiento de la clase de frutas.

El atributo único que tiene nuestra clase naranja se identifica con el nombre de la variable supremas (que es el nombre oficial de los pequeños segmentos que se encuentran en las naranjas). Aquí es donde entra en juego la especialización; no todas las frutas tienen supremas, pero todas las naranjas sí, por lo que es lógico reservar la variable suprema para la clase naranja.

Agregar el método de pelado a los métodos preexistentes de comer y jugo también es lógico porque, aunque no todas las frutas se pueden pelar, las naranjas a menudo se pelan.

Debe tener en cuenta que si no tuviéramos la intención de alterar los métodos existentes de comer y jugo, no necesitaríamos incluirlos en nuestra clase de naranja. Los métodos de la clase naranja anulan cualquier método similar en la clase de frutas. Entonces, si todas las frutas se comen y exprimen de la misma manera, no necesitaríamos crear estos métodos en la clase naranja.

El papel que juegan los constructores en la herencia

De forma predeterminada, los constructores de clases principales son heredados por clases secundarias. Por lo tanto, si se crea un objeto de clase secundaria, esto significa que también se crea automáticamente un objeto de clase principal.

Volviendo a nuestro ejemplo, cada vez que se crea un nuevo objeto naranja, también se crea un objeto fruta porque una naranja es una fruta.

Detrás de escena, cuando se crea un objeto de clase secundaria, primero se llama al constructor de la clase principal seguido del constructor de la clase secundaria. En nuestra clase secundaria naranja anterior, si se crea un objeto naranja sin ningún parámetro, se llamará a nuestro constructor de clase de fruta predeterminado, seguido de nuestro contratista de clase naranja predeterminado.

El supermétodo en nuestro constructor primario anterior es necesario porque especifica que el constructor primario — y no el constructor predeterminado — de la clase de fruta padre debe ser llamado cada vez que se crea un objeto naranja con parámetros.

Ahora puede usar la herencia en Java

A partir de este artículo, pudo aprender qué es la herencia, cómo funciona y por qué es un concepto tan importante en la programación. Ahora puede crear sus relaciones de herencia utilizando el lenguaje de programación Java. Además, ahora sabe cómo sortear la regla de herencia única de Java creando una relación de abuelos.

Crédito de la imagen: Andreas Wohlfahrt / Pexels

Cuota Cuota Pío Correo electrónico Cómo organizar su código orientado a objetos con herencia

Obtener la programación orientada a objetos correctamente significa que necesita saber sobre la herencia y cómo puede simplificar la codificación y reducir los errores.

Leer siguiente
Temas relacionados
  • Programación
  • Java
  • Programación orientada a objetos
Sobre el Autor Kadeisha Kean(21 Artículos publicados)

Kadeisha Kean es desarrolladora de software Full-Stack y redactora técnica / tecnológica. Tiene la habilidad distintiva de simplificar algunos de los conceptos tecnológicos más complejos; produciendo material que puede ser fácilmente entendido por cualquier novato en tecnología. Le apasiona escribir, desarrollar software interesante y viajar por el mundo (a través de documentales).

Más de Kadeisha Kean

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse