Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Herencia Java

Java La herencia es un concepto fundamental de la programación orientada a objetos que permite que una nueva clase herede propiedades y comportamientos (campos y métodos) de una clase existente. Esto favorece la reutilización del código y establece una relación jerárquica entre las clases.

Conceptos clave

  • Superclase (Clase padre): La clase cuyas propiedades y métodos se heredan.
  • Subclase (Clase hija): La clase que hereda de la superclase.

Utilización

La herencia se utiliza para crear una nueva clase que sea un tipo de una clase existente. Ayuda a ampliar la funcionalidad de una clase sin modificarla, respetando así el Principio Abierto/Cerrado del diseño de software.

Syntax


class Superclass {
    // fields and methods
}

class Subclass extends Superclass {
    // additional fields and methods
}

Ejemplos

Ejemplo 1: Herencia básica


class Animal {
    void eat() {
        System.out.println("This animal eats food.");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("The dog barks.");
    }
}

public class InheritanceExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // Inherited method
        dog.bark(); // Subclass method
    }
}

En este ejemplo, Dog es una subclase que hereda el método eat de la superclase Animal. La clase Dog también tiene su propio método, bark.

Ejemplo 2: Anulación de métodos


class Vehicle {
    void run() {
        System.out.println("The vehicle is running.");
    }
}

class Car extends Vehicle {
    @Override
    void run() {
        System.out.println("The car is running safely.");
    }
}

public class MethodOverridingExample {
    public static void main(String[] args) {
        Car car = new Car();
        car.run(); // Overridden method
    }
}

Aquí, la clase Car anula el método run de la clase Vehicle para proporcionar una implementación específica.

Ejemplo 3: Utilizando super Keyword


class Person {
    String name = "John";

    void display() {
        System.out.println("Person's name: " + name);
    }
}

class Employee extends Person {
    String name = "Doe";

    void display() {
        System.out.println("Employee's name: " + name);
        super.display(); // Call superclass method
    }
}

public class SuperKeywordExample {
    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.display();
    }
}

En este ejemplo, la palabra clave super se utiliza para llamar al método display de la superclase Person desde la subclase Employee.

Consejos y buenas prácticas

  • Utiliza la Herencia Juiciosamente: Utiliza la herencia sólo cuando exista una verdadera relación "es-un". Por ejemplo, un Dog es un Animal.
  • Evita las Jerarquías de Herencia Profunda: Mantén las jerarquías de herencia poco profundas para mantener la simplicidad y reducir la complejidad.
  • Prefiere la Composición a la Herencia: Considera la posibilidad de utilizar la composición (relación has-a) en lugar de la herencia cuando proceda, ya que ofrece más flexibilidad.
  • Utiliza @Override Anotación: Utiliza siempre la anotación @Override al sobrescribir métodos para mejorar la legibilidad del código y evitar errores.
  • Control de acceso: Utiliza el modificador de acceso protected para los miembros de la superclase que deben ser accesibles en las subclases, pero no para el mundo exterior.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis