Está en la página 1de 8

Herencia de Java (subclase y superclase)

En Java, es posible heredar atributos y métodos de una clase a otra.


Agrupamos el "concepto de herencia" en dos categorías:

 Subclase (hijo): La clase que hereda de otra clase.


 Superclase (padre): La clase que se hereda de.

Para heredar de una clase, se usa la palabra reservada extends.

En el siguiente ejemplo, la clase (subclase) Car hereda los atributos y


métodos de la clase (superclase) Vehicle:
class Vehicle {

protected String brand = "Ford";

public void honk() {

System.out.println("Tuut, tuut!");

class Car extends Vehicle {

private String modelName = "Mustang";

public static void main(String[] args) {

Car myFastCar = new Car();

myFastCar.honk();

System.out.println(myFastCar.brand + " " +


myFastCar.modelName);

Nótese el modificador protected en Vehícle

Se establece el atributo de marca en Vehícle en un modificador de


acceso protected. Si estuviera configurado en private, la clase Car
no podría acceder a él.
¿Por qué y cuándo utilizar la "herencia"?

Es útil para la reutilización del código: reutiliza atributos y métodos de


una clase existente cuando se crea una nueva clase.

Nota: El Polimorfismo usa métodos heredados para realizar


diferentes tareas.

La palabra clave final: Si no se desea que otras clases hereden de


una clase, se debe usar la palabra reservada final. Si intenta acceder a
una clase final, Java generará un error:

final class Vehicle {

...

class Car extends Vehicle {

...

}
La salida será algo como esto:

final class Vehicle {

protected String brand = "Ford";

public void honk() {

System.out.println("Tuut, tuut!");

class Main extends Vehicle {

private String modelName = "Mustang";

public static void main(String[] args) {

Main myFastCar = new Main();

myFastCar.honk();

System.out.println(myFastCar.brand + " " +


myFastCar.modelName);

}
Polimorfismo de Java

Polimorfismo significa "muchas formas" y ocurre cuando se tienen


muchas clases que están relacionadas entre sí por herencia.

La herencia permite heredar atributos y métodos de otra clase. El


polimorfismo usa esos métodos para realizar diferentes tareas. Esto
permite realizar una sola acción de diferentes formas.

Por ejemplo, en una superclase llamada Animal se tiene un método


llamado animalSound(). Las subclases de animales pueden ser cerdos,
gatos, perros, pájaros, y también tienen su propia implementación de
un sonido animal (el cerdo gruñe, el gato maúlla, etc.):
class Animal {

public void animalSound() {

System.out.println("The animal makes a sound");

class Pig extends Animal {

public void animalSound() {

System.out.println("The pig says: wee wee");

class Dog extends Animal {

public void animalSound() {

System.out.println("The dog says: bow wow");

Al igual que con la herencia, aquí también se usa la palabra reservada


extends para heredar de una clase. Ahora se pueden crear los objetos
Pig y Dog y llamar al método animalSound() en ambos:
class Animal {

public void animalSound() {

System.out.println("The animal makes a sound");

class Pig extends Animal {

public void animalSound() {

System.out.println("The pig says: wee wee");

class Dog extends Animal {

public void animalSound() {

System.out.println("The dog says: bow wow");

class Main {

public static void main(String[] args) {

Animal myAnimal = new Animal();

Animal myPig = new Pig();

Animal myDog = new Dog();


myAnimal.animalSound();

myPig.animalSound();

myDog.animalSound();

¿Por qué y cuándo utilizar "herencia" y "polimorfismo"?

Es útil para la reutilización del código: Se reutilizan atributos y métodos


de una clase existente cuando se crea una nueva clase.

También podría gustarte