articulo

Herencia

La herencia es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Permite la creación de jerarquías de clases, donde una clase derivada (subclase) hereda atributos y comportamientos de una clase base (superclase). La subclase puede extender la funcionalidad de la superclase agregando nuevos atributos y métodos, o sobrescribiendo los existentes.

Características

Se tiene varias características que ayudan a organizar y reutilizar el código. A continuación, se presentan algunas que se consideran clave en la herencia:

  1. Reutilización de código: Permite compartir y reutilizar código entre clases relacionadas. Una subclase hereda los atributos y métodos de su superclase, lo que evita que volver a escribir el mismo código en múltiples lugares.
  2. Relaciones jerárquicas: Crea una jerarquía de clases, donde las subclases se especializan y amplían la funcionalidad de la superclase. Esto ayuda a organizar las clases en una estructura lógica y coherente.
  3. Extensibilidad: Las subclases pueden agregar nuevos atributos y métodos específicos, además de los heredados de la superclase. Esto permite extender y personalizar el comportamiento de la superclase según las necesidades de la subclase.
  4. Polimorfismo: Facilita el polimorfismo, que es la capacidad de tratar objetos de diferentes clases derivadas de una superclase de manera uniforme. Esto permite escribir código genérico que puede funcionar con objetos de diferentes tipos, siempre que hereden de la misma superclase.
  5. Especialización y generalización: Permite la especialización, donde las subclases pueden agregar características específicas adicionales a la superclase. También genera la generalización, donde se pueden agrupar objetos de diferentes subclases bajo la superclase común.
  6. Herencia de interfaces: Además de heredar de clases, Java también permite la implementación de interfaces, lo que proporciona una forma de lograr herencia múltiple virtual. Una clase puede implementar múltiples interfaces, lo que permite heredar múltiples comportamientos sin la restricción de herencia única de clases.

Estas son algunas de las características principales de la herencia en la programación orientada a objetos. La herencia es un concepto poderoso que ayuda a mejorar la modularidad, reutilización y flexibilidad del código.

Ejemplo

// Clase base (superclase)
class Vehiculo {
    protected String marca;

    public void conducir() {
        System.out.println("Conduciendo un vehículo...");
    }
}

// Clase derivada (subclase)
class Automovil extends Vehiculo {
    private int numPuertas;

    public void abrirPuertas() {
        System.out.println("Abriendo las puertas del automóvil...");
    }
}

// Clase principal
public class Auto {
    public static void main(String[] args) {
        Automovil miAuto = new Automovil();
        miAuto.marca = "Toyota";
        miAuto.conducir();
        miAuto.abrirPuertas();
    }
}

En este ejemplo, la clase Vehiculo es la superclase, y la clase Automovil es la subclase que hereda de Vehiculo utilizando la palabra clave extends. La subclase Automovil tiene su propio atributo numPuertas y método abrirPuertas(), además de heredar el atributo marca y método conducir() de la superclase.

En el método Auto(), creamos un objeto miAuto de la clase Automovil y podemos acceder tanto a los métodos y atributos heredados de la superclase, como a los específicos de la subclase.

Es importante mencionar que en Java, una clase solo puede heredar de una única superclase, es decir, no se admite la herencia múltiple directa. Sin embargo, se puede lograr cierto grado de herencia múltiple a través de interfaces en Java.

Vídeo 1. Ejecución de código de ejemplo de herencia en java. Fuente: youtube.com

En el vídeo 1, se muestra la ejecución del código que ejemplifica la herencia, Espero que este post te ayude a comprender mejor el concepto de herencia en Java.

Leave a Reply

Your email address will not be published. Required fields are marked *