¡Suscríbete a mi canal de Youtube!

▷ POLIMORFISMO en JAVA

 Polimorfismo en Java

Para entender a el concepto de polimorfismo es necesario tener en claro el concepto de herencia, para lo cual te sugiero que leas el artículo de Herencia en Java antes de este.
 
La palabra polimorfismo significa "muchas formas" y aplicado en la programación orientada a objetos con en Java es aquella característica que permite a los objetos de una clase base "tomar la forma" de un objeto de una clase derivada, es decir, cuando instanciamos un objeto de la clase base, podemos mandar llamar al constructor de la clase derivada para que el objeto tome ese rol y pueda acceder tanto a los atributos como a los métodos de la clase hijo. 
 
Para evitar ambigüedades, si en ambas clases hubiese un método con el mismo nombre, se debe ocupar la claúsula @Override en la clase derivada, así el objeto con polimorfismo "sobreescribirá" el método y priorizará el de la clase derivada y no el propio.

En los siguientes ejemplos podemos ver el uso de polimorfismo en las clase base Animal y las clases derivadas Perro y Gato.

Clase Animal

package polimorfismo;
public class Animal
{
protected String nombre, raza, color, tamano;
private final String tipo;

public Animal(String nombre, String raza, String color, String tamano)
{
this.nombre=nombre;
this.raza=raza;
this.color=color;
this.tamano=tamano;
this.tipo="Terrestre";
}
public void imprimeDatos()
{
System.out.println("El nombre es: "+nombre);
System.out.println("La raza es: "+raza);
System.out.println("El color es: "+color);
System.out.println("El tamaño es: "+tamano);
System.out.println("El tipo es: "+tipo);
}
public void imprimeInformacion()
{
System.out.println("\n***DATOS DE ANIMAL***");
System.out.println("Soy un animal.");
}
}

Clase Perro

package polimorfismo;

public class Perro extends Animal
{
private final String marca_croquetas;
public Perro(String nombre, String raza, String color, String tamano, String marca_croquetas)
{
super(nombre, raza, color, tamano);
this.marca_croquetas=marca_croquetas;
}

@Override //Se ocupa override para sobreescribir el método de la clase base por éste cuando se realice polimorfismo con la clase Perro
public void imprimeInformacion()
{
System.out.println("\n***DATOS DE PERRO***");
System.out.println("Soy un perro.");
System.out.println("Y mi marca de croquetas favorita es: "+marca_croquetas);
}
}

Clase Gato

package polimorfismo;

public class Gato extends Animal
{
    private final String marca_arena;
    public Gato(String nombre, String raza, String color, String tamano, String marca_arena)
    {
        super(nombre, raza, color, tamano);
        this.marca_arena=marca_arena;
    }
              
    @Override
//Se ocupa override para sobreescribir el método de la clase base por éste cuando se realice polimorfismo con la clase Gato        
 
    public void imprimeInformacion()
    {
        System.out.println("\n***DATOS DE GATO***");
        System.out.println("Soy un gato.");
        System.out.println("y mi marca favorita de arena es: "+marca_arena);
    }
        
}
 
También se debe de codificar la clase main llamada Polimorfismo que permitirá la ejecución del programa.

Clase Polimorfismo

package polimorfismo;
public class Polimorfismo
{

    public static void main(String[] args)
    {
        //Declaramos los objetos del tipo de clase Animal.
        Animal an;
        //Inicializamos el primer objeto con el constructor de la clase Animal.
        //Y mandamos llamar los métodos de la clase Animal.
        an=new Animal("Yeti","Desconocida","Azul","Enorme");
        an.imprimeInformacion();
        an.imprimeDatos();
        
        //Inicializamos el segundo objeto con el constructor de la clase Perro.
        //Y mandamos llamar los métodos de la clase Animal pero sobrescrita por el constructor de Perro.
        an=new Perro("Firulais","Pastor Aleman","Cafe","Grande","El perro feliz");
        an.imprimeInformacion();
        an.imprimeDatos();
        //Inicializamos el segundo objeto con el constructor de la clase Gato.
        //Mandamos llamar los métodos de la clase Animal pero sobrescrita por el constructor de Gato.
        an=new Gato("Bolita de Nieve","Persa","Blanco","Peque","Pulcrogato");
        an.imprimeInformacion();
        an.imprimeDatos();
    }
}
 
En resumen podemos decir que el polimorfismo permite que un objeto de una clase base se comporte como si fuera un objeto instanciado de una clase derivada, esto es muy útil porque nos ahorra líneas de código y nos permite la flexibilidad en la codificación sobretodo en programas más extensos y elaborados.

En el siguiente video te explico un poco más a detalle el ejemplo anterior y su codificación paso a paso.

 
No te olvides darle LIKE y SUSCRIBIRTE al blog y a mi canal si te gustó el video. Si gustas realizar una DONACIÓN para ayudarme a mejorar el canal y mi contenido, puedes hacerlo mediante el botón ❤$GRACIAS ubicado en la parte posterior del video en YouTube o visitando el enlace https://linktr.ee/ezavalar y haciendo clic en el botón Donaciones.

Comentarios

Seguidores del blog

Suscríbete al blog

Recibe mis nuevas publicaciones por email: