¿Qué es la Herencia?

La herencia es un concepto clave en la programación orientada a objetos (POO). Se trata de un mecanismo que permite crear nuevas clases a partir de otras ya existentes, propagando de esta forma ciertas características o comportamientos a las nuevas clases generadas. Esto ayuda a reducir la duplicidad de código y a crear relaciones lógicas entre diferentes clases.

Cuando una clase se hereda de otra, se dice que la nueva clase es una «subclase» o «clase hija«, y la clase de la que se hereda se denomina «superclase» o «clase padre«. La clase hija puede heredar atributos y métodos de la clase padre y también puede tener sus propios atributos y métodos únicos.

Ejemplos

Un buen ejemplo puede ser el de un sistema de gestión de personal para una empresa. Podríamos tener una clase padre llamada «Empleado» que contenga atributos y métodos comunes a todos los empleados, como nombre, número de identificación, salario, función para calcular la nómina, etc.

Luego, podríamos tener varias clases hijas que heredan de «Empleado», como «Gerente», «Ingeniero» o «Secretaria». Estas clases hijas tendrían todos los atributos y métodos de «Empleado», pero además podrían tener sus propios atributos y métodos únicos, como «departamento que gerencia» para Gerente, «campo de ingeniería» para Ingeniero, y «número de máquina de escribir» para Secretaria.

class Empleado:
    def __init__(self, nombre, id, salario):
        self.nombre = nombre
        self.id = id
        self.salario = salario

class Gerente(Empleado):
    def __init__(self, nombre, id, salario, departamento):
        super().__init__(nombre, id, salario)
        self.departamento = departamento

Preguntas frecuentes

  • Informarse sobre los tipos de herencias: Existen varios tipos de herencia como la herencia simple, la herencia múltiple, la herencia multnivel, entre otras. Cada uno con sus propios usos y reglas. Para más detalles puedes visitar este enlace.
  • ¿La herencia puede ser utilizada en todos los lenguajes de programación? No todos los lenguajes de programación soportan la herencia. Por ejemplo, los lenguajes procedimentales como C no la soportan, mientras que los lenguajes orientados a objetos como Java, Python y C++ sí lo hacen.

Las últimas noticias en nuestro podcast semanal