Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Dominando la Herencia en Java: Subclases, Superclases y Principios Fundamentales

La herencia es el proceso mediante el cual una clase adquiere las propiedades (métodos y campos) de otra. Permite organizar la información en una jerarquía lógica y reutilizar código.

Palabra Clave extends

Se usa para heredar de una clase.

class Super { ... }
class Sub extends Super { ... }

Ejemplo Básico

class Calculation {
    int z;
    public void addition(int x, int y) {
        z = x + y;
        System.out.println("Suma: " + z);
    }
    public void Subtraction(int x, int y) {
        z = x - y;
        System.out.println("Resta: " + z);
    }
}

public class My_Calculation extends Calculation {
    public void multiplication(int x, int y) {
        z = x * y;
        System.out.println("Producto: " + z);
    }

    public static void main(String args[]) {
        int a = 20, b = 10;
        My_Calculation demo = new My_Calculation();
        demo.addition(a, b);       // heredado
        demo.Subtraction(a, b);    // heredado
        demo.multiplication(a, b); // propio
    }
}

Salida:

Suma: 30
Resta: 10
Producto: 200

Al crear un objeto de la subclase, se incluye una copia de los miembros de la superclase (excepto constructores).

Referencia de Superclase a Objeto de Subclase

Una variable de tipo superclase puede referenciar un objeto de subclase, pero solo permite acceder a miembros de la superclase.

Calculation cal = new My_Calculation();
cal.addition(a, b);      // OK
cal.Subtraction(a, b);   // OK
// cal.multiplication(a, b); // ERROR: no visible desde tipo Calculation

Para acceder a miembros de ambas, usa referencia de subclase.

Palabra Clave super

Similar a this, pero para la superclase. Dos usos principales:

1. Diferenciar Miembros con Mismo Nombre

super.variable
super.metodo()

Ejemplo

class Super_class {
    int num = 20;
    public void display() {
        System.out.println("display de Superclase");
    }
}

public class Sub_class extends Super_class {
    int num = 10;
    public void display() {
        System.out.println("display de Subclase");
    }

    public void my_method() {
        Sub_class sub = new Sub_class();
        sub.display();       // método de subclase
        super.display();     // método de superclase
        System.out.println("num subclase: " + sub.num);
        System.out.println("num superclase: " + super.num);
    }

    public static void main(String args[]) {
        Sub_class obj = new Sub_class();
        obj.my_method();
    }
}

Salida:

display de Subclase
display de Superclase
num subclase: 10
num superclase: 20

2. Invocar Constructor de la Superclase

La subclase hereda el constructor por defecto. Para llamar a uno parametrizado:

super(valores);

Ejemplo

class Superclass {
    int age;
    Superclass(int age) { this.age = age; }
    public void getAge() { System.out.println("Edad en superclase: " + age); }
}

public class Subclass extends Superclass {
    Subclass(int age) { super(age); } // invoca constructor parametrizado
    public static void main(String args[]) {
        Subclass s = new Subclass(24);
        s.getAge();
    }
}

Salida: Edad en superclase: 24

Relación IS-A

extends establece una relación ES-UN (IS-A).

class Animal {}
class Mammal extends Animal {}
class Reptile extends Animal {}
class Dog extends Mammal {}

Verificación con instanceof:

Animal a = new Animal();
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal); // true
System.out.println(d instanceof Mammal); // true
System.out.println(d instanceof Animal); // true

Palabra Clave implements

Se usa para implementar interfaces (una clase no puede extends una interfaz).

interface Animal {}
class Mammal implements Animal {}
class Dog extends Mammal {}

Relación HAS-A (Composición)

Basada en uso: una clase TIENE-UN objeto de otra. Reduce duplicación y permite reutilización.

class Vehicle {}
class Speed {}
class Van extends Vehicle {
    private Speed sp; // Van TIENE-UN Speed
}

La clase Van oculta los detalles de Speed (encapsulamiento).

Tipos de Herencia

Java NO soporta herencia múltiple de clases (una clase no puede extender más de una).

// ILEGAL
class C extends A, B {}

Pero una clase sí puede implementar múltiples interfaces, lo que resuelve la limitación.

Java

  1. Dominando la herencia en C#: Conceptos, tipos y código práctico
  2. Herencia en C#: Construyendo código reutilizable y mantenible
  3. Palabra clave final en Java: Variables, métodos y clases
  4. Operador instanceof en Java: Guía completa
  5. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  6. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  7. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  8. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  9. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación