Entendiendo fácilmente la herencia en Java

TheDevStory
4 min readApr 12, 2023

La herencia en la programación en Java es un concepto realmente importante. Si entiendes la herencia, puedes reutilizar el código de manera eficiente y expandir el programa más fácilmente. En este artículo, explicamos en detalle las palabras clave relacionadas con la herencia y revisamos ejemplos de código con comentarios.

¿Qué es la herencia?

La herencia es la creación de una nueva clase (hija) a partir de una clase existente (padre). A través de este proceso, se puede reducir la duplicación de código y facilitar la expansión del programa. Por ejemplo, a partir de una clase Animal, puedes usar la herencia para crear clases de Gato y Perro.

La herencia permite que las clases hijas hereden los atributos y métodos de las clases padre. De esta manera, puedes definir funciones comunes en la clase padre y luego extender o modificar esas funciones en las clases hijas según sea necesario. Al utilizar la herencia, la estructura del programa se vuelve más clara y es más fácil de mantener.

En Java, para implementar la herencia, usamos la palabra clave extends. Al utilizar esta palabra clave, la clase hija hereda los atributos y métodos de la clase padre.

// La clase padre Animal
class Animal {
void speak() {
System.out.println("El animal habla");
}
}

// La clase Gato hereda de la clase Animal
class Cat extends Animal {
void speak() {
System.out.println("El gato maúlla");
}
}

// La clase Perro también hereda de la clase Animal
class Dog extends Animal {
void speak() {
System.out.println("El perro ladra");
}
}

¿Qué es la sobrescritura de métodos?

Cuando una clase hija sobrescribe (redefine) un método de la clase padre, el método se puede modificar según la clase hija. La sobrescritura es útil cuando una clase hija necesita modificar o agregar partes de una función de la clase padre sin cambiar el código existente. Esto permite extender o cambiar funciones sin modificar el código existente.

En Java, al sobrescribir métodos, es útil usar la anotación @Override para indicarlo explícitamente. De esta manera, otros desarrolladores pueden entender fácilmente el código y se puede evitar cambiar accidentalmente el método sobrescrito.

// La clase padre Animal
class Animal {
void speak() {
System.out.println("El animal habla");
}
}

// La clase Gato hereda de la clase Animal
class Cat extends Animal {
@Override
void speak() {
System.out.println("El gato maúlla");
}
}

¿Qué es la palabra clave `this`?

La palabra clave this se utiliza para hacer referencia al objeto (instancia) actual. Con la palabra clave this, puedes distinguir entre las variables de instancia y las variables locales en una clase. Además, solo se puede utilizar en métodos de instancia o constructores.

Usar esta palabra permite llamar a otros métodos de la clase o acceder a las variables de instancia haciendo referencia explícita al objeto actual. Esto hace que el código sea más claro y fácil de leer.

class MyClass {
int value;

// Usando la palabra clave this en el constructor
MyClass(int value) {
this.value = value;
}

// Usando la palabra clave this en un método
void display() {
System.out.println("Valor: " + this.value);
}
}

¿Qué es la palabra clave `super`?

La palabra clave super se utiliza para hacer referencia a la clase padre. Puedes usar la palabra super en una clase hija para acceder a los métodos o campos de la clase padre. De esta manera, puedes reutilizar o extender las funciones de la clase padre en la clase hija.

Con esta palabra, puedes llamar al constructor de la clase padre, llamar a un método que ha sido sobrescrito en la clase padre o acceder a los campos de la clase padre.

class Parent {
int value;

Parent(int value) {
this.value = value;
}

void display() {
System.out.println("Valor del padre: " + value);
}
}

class Child extends Parent {
int value;

Child(int parentValue, int childValue) {
super(parentValue);
this.value = childValue;
}

void display() {
System.out.println("Valor del hijo: " + value);
super.display(); // Llamando al método display de la clase padre
}
}

¿Qué son this() y super()?

this() y super() se utilizan para llamar a constructores en Java. La diferencia entre ellos es que:

  • this() : llama a otro constructor en la misma clase.
  • super() : llama al constructor de la clase padre.

Ambos deben ser la primera instrucción en un constructor y no se pueden usar juntos en el mismo constructor.

class Parent {
Parent() {
System.out.println("Constructor de la clase padre");
}
}

class Child extends Parent {
Child() {
super(); // Llamando al constructor de la clase padre
System.out.println("Constructor de la clase hija");
}

Child(int value) {
this(); // Llamando a otro constructor en la misma clase
System.out.println("Constructor de la clase hija con valor: " + value);
}
}

Hasta ahora, hemos visto una explicación más detallada de las palabras clave relacionadas con la herencia en Java. Al comprender estos conceptos y aplicarlos en tu programación, podrás mejorar la eficiencia y la escalabilidad de tus programas en Java.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

TheDevStory
TheDevStory

Written by TheDevStory

A web developer crafting online experiences. Also football(soccer) coach and Spanish Learner.

No responses yet

Write a response