Ver Mensaje Individual
  #16 (permalink)  
Antiguo 08/05/2014, 16:57
juanbimbaperez
 
Fecha de Ingreso: mayo-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: cual es la diferencia entre sobre escritura de métodos y polimorfismo

class Abuela{

void queEres(){
System.out.println("Soy Madre");
}
}

class Madre extends Abuela{

void queEres(){
System.out.println("Soy hija y");
super.queEres();
}
}

class Hija extends Madre{

void queEres(){
System.out.println("Soy hija");
}
}

class Padre{

void queEres(){
System.out.println("Soy Padre");
}
}

En algún otro sitio...

Abuela Alice = new Abuela();
Madre Mirian = new Madre();
Hija Alicia = new Hija();
Padre Bob = new Padre();

System.out.println("Alice:");
Alice.queEres();

System.out.println("Mirian:");
Mirian.queEres();

System.out.println("Alicia:");
Alicia.queEres();

System.out.println("Bob:");
Bob.queEres();


El método (queEres) se comporta de múltiples formas, por tanto se ha implementado el polimorfismo a través de la sobre escritura de los métodos.

Por tanto regresando a la pregunta original. No puede haber diferencias entre ambos pues a través de uno se implementa el otro. Es decir el polimorfismo puede lograr mediante la sobre escritura de los métodos. Y como ya se dijo también mediante interfaces.

Noten que aquí la clase Padre no guarda una relación de parentesco de forma explicita con las clases Abuela, Madre e Hija.

Claro que pude haber escrito:

Abuela Alice = new Abuela();
Abuela Mirian = new Madre();
Abuela Alicia = new Hija();
Padre Bob = new Padre();

System.out.println("Alice:");
Alice.queEres();

System.out.println("Mirian:");
Mirian.queEres();

System.out.println("Alicia:");
Alicia.queEres();

System.out.println("Bob:");
Bob.queEres();

De acuerdo a Wikipedia "El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía."

Que me dicen.

Última edición por juanbimbaperez; 08/05/2014 a las 20:25