Polimorfismo ( Overriding )

jueves, agosto 12, 2010 , , 1 Comments

El Polimorfismo es una característica esencial de la programación orientada a objetos.

El punto medular en el Polimorfismo es separar el Qué del Como, en un lenguaje mortal significa enfocarse en el que hace sin importar como lo hace.  Existen diferentes formas de implementar el polimorfismo esta vez veremos como hacerlo Sobrescribiendo (overriding)Antes de continuar es importante recalcar que se debe tener claro el concepto de Herencia para poder entender el Polimorfismo. Ahora si un ejemplo:


Usaremos nuevamente nuestra clase Persona y le añadiremos el método hablar()
/**
 *
 * @author http://javerosanonimos.blogspot.com/
 */
public class Persona {
    public String nombre="";
    public short edad=0;
    public char sexo='x';

    public Persona(){

    }

    public String hablar(){
        return ":)";
    }
}


En los siguientes ejemplos aplicaremos el ya famoso Polimorfismo sobrescribiendo el método hablar() en nuestra clase Mexicano y Gringo
/**
 *
 * @author http://javerosanonimos.blogspot.com/
 */
public class Mexicano extends Persona {
    
    public Mexicano(){
    }

    @Override
    public String hablar(){
        return "Hola";
    }
}

/**
 *
 * @author http://javerosanonimos.blogspot.com/
 */
public class Gringo extends Persona {
    
    public Gringo(){
    }

    @Override
    public String hablar(){
        return "Hello";
    }
}

Y por último la clase para probar nuestro código con algunas explicaciones
/**
/**
 *
 * @author http://javerosanonimos.blogspot.com/
 */
public class ProbadoraCodigo {
    public static void main(String[] args){
        //Tenemos 2 objetos Mexicano
        Persona mx=new Mexicano();
        Mexicano mx2=new Mexicano();
        //Aqui 2 obejtos Gringo
        Persona gr=new Gringo();
        Gringo gr2=new Gringo();
        //Y uno Persona
        Persona per=new Persona();
        
/*Al ejecutar podran notar que el resulado es el mismo para las siguientes
 2 líneas porque ambos usan el metodo hablar() de la clase Mexicano y no
 de la clase Persona aun cuando en el primero el tipo de Objeto es Persona
 esto se debe a que en el momento de la ejecucion se determina que el método
 apunta a una instancia de la clase Mexicano y no Persona.
 Lo mismo sucede con las siguientes 2 líneas de la clase Gringo, esta
 funcionalidad del polomorfismo aparentemente no tiene sentido pero el
 asunto es que no siempre sera conveniente usar una u otra Clase en 
 particular, así esto nos permite varias posibilidades para una misma solución
*/
        System.out.println("Persona/Mexicano: "+mx.hablar());
        System.out.println("Mexicano/Mexicano: "+mx2.hablar());
        //-
        System.out.println("Persona/Gringo: "+gr.hablar());
        System.out.println("Gringo/Gringo: "+gr2.hablar());
   // Por último solo para probar usamos el método hablar() de la clase Persona
        System.out.println("Persona: "+per.hablar());
    }
}


Siguenos en nuestras redes sociales.

1 comentario:

  1. System.out.println("Persona/Mexicano: "+mx.hablar()); IMPRIME:hola
    System.out.println("Mexicano/Mexicano: "+mx2.hablar()); IMPRIME:hola
    System.out.println("Persona/Gringo: "+gr.hablar()); IMPRIME:hellow
    System.out.println("Gringo/Gringo: "+gr2.hablar()); IMPRIME:hellow
    System.out.println("Persona: "+per.hablar()); IMPRIME: :)

    ResponderEliminar