¿Qué es herencia, superclase y subclase en Java?

click fraud protection

Un concepto importante en la programación orientada a objetos es la herencia. Proporciona un camino para objetos para definir relaciones entre sí. Como su nombre indica, un objeto puede heredar características de otro objeto.

En términos más concretos, un objeto puede transmitir su estado y comportamiento a sus hijos. Para que la herencia funcione, los objetos deben tener características en común entre sí.

En Java, las clases se pueden tomar de otras clases, que se pueden tomar de otros, etc. Esto se debe a que pueden heredar entidades de la clase superior, hasta la clase Object más alta.

Un ejemplo de herencia de Java

Digamos que hacemos una clase llamada Humano que representa nuestras características físicas. Es una clase genérica que podría representarlo a usted, a mí o a cualquier persona en el mundo. Su estado realiza un seguimiento de cosas como la cantidad de piernas, la cantidad de brazos y el tipo de sangre. Tiene comportamientos como comer, dormir y caminar.

El ser humano es bueno para tener una idea general de lo que nos hace a todos iguales, pero no puede, por ejemplo, contarme sobre las diferencias de género. Para eso, tendríamos que hacer dos nuevos tipos de clase llamados Hombre y Mujer. El estado y los comportamientos de estas dos clases diferirán entre sí de muchas maneras, excepto por las que heredan de los humanos.

instagram viewer

Por lo tanto, la herencia nos permite abarcar el estado y los comportamientos de la clase padre en su hijo. La clase secundaria puede extender el estado y los comportamientos para reflejar las diferencias que representa. El aspecto más importante de este concepto para recordar es que la clase secundaria es una versión más especializada del padre.

¿Qué es una superclase?

En la relación entre dos objetos, una superclase es el nombre dado a la clase de la que se hereda. Suena como una clase super duper, pero recuerda que es la versión más genérica. Los mejores nombres para usar podrían ser la clase base o simplemente la clase padre.

Para tomar un ejemplo más real del mundo esta vez, podríamos tener una superclase llamada Persona. Su estado contiene el nombre, la dirección, la altura y el peso de la persona, y tiene comportamientos como ir de compras, hacer la cama y mirar televisión.

Podríamos hacer dos nuevas clases que hereden de Person llamadas Student y Worker. Son versiones más especializadas porque aunque tienen nombres, direcciones, ven televisión y van de compras, también tienen características diferentes entre sí.

El trabajador podría tener un estado que tenga un título de trabajo y un lugar de empleo, mientras que el estudiante podría tener datos sobre un área de estudio y una institución de aprendizaje.

Ejemplo de superclase:

Imagine que define una clase de persona:

Persona de clase pública. { }

Se puede crear una nueva clase extendiendo esta clase:

Clase pública Empleado extiende Persona. { }

Se dice que la clase Persona es la superclase de la clase Empleado.

¿Qué es una subclase?

En la relación entre dos objetos, una subclase es el nombre dado a la clase que hereda de la superclase. Aunque suena un poco aburrido, recuerde que es una versión más especializada de la superclase.

En el ejemplo anterior, Estudiante y Trabajador son las subclases.

Las subclases también se pueden conocer como clases derivadas, clases secundarias o clases extendidas.

¿Cuántas subclases puedo tener?

Puede tener tantas subclases como desee. No hay limitación sobre cuántas subclases puede tener una superclase. Del mismo modo, no hay una limitación en el número de niveles de herencia. Se puede construir una jerarquía de clases sobre una determinada área de comunidad.

De hecho, si observa las bibliotecas de API de Java, verá muchos ejemplos de herencia. Cada clase en las API se hereda de una clase llamada java.lang. Objeto. Por ejemplo, cada vez que usa un objeto JFrame, se encuentra al final de una larga línea de herencia:

 java.lang. Objeto. extendido por java.awt. Componente. extendido por java.awt. Envase. extendido por java.awt. Ventana. extendido por java.awt. Marco. extendido por javax.swing. JFrame 

En Java, cuando una subclase hereda de una superclase, se conoce como "extender" la superclase.

¿Puede mi subclase heredar de muchas superclases?

No. En Java, una subclase solo puede extender una superclase.

¿Por qué usar herencia?

La herencia permite a los programadores reutilizar el código que ya han escrito. En el ejemplo de la clase Humana, no necesitamos crear nuevos campos en la clase Hombre y Mujer para contener el tipo de sangre porque podemos usar el heredado de la clase Humana.

Otro beneficio de usar la herencia es que nos permite tratar una subclase como si fuera una superclase. Por ejemplo, supongamos que un programa ha creado múltiples instancias de los objetos Hombre y Mujer. Es posible que el programa necesite llamar al comportamiento de suspensión de todos estos objetos. Debido a que el comportamiento del sueño es un comportamiento de la superclase Humana, podemos agrupar todos los objetos Hombre y Mujer y tratarlos como si fueran objetos Humanos.

instagram story viewer