- El polimorfismo incita a la reutilización de código.
 - El polimorfismo permite a una subclase actuar como una superclase o una interfaz que la implemente.
 - A una variable le puedo asignar distintos tipos de objetos en tiempo de ejecución.
 - Una subclase (más específico) “is a” objeto de superclase(más general).
 - El polimorfismo es unidireccional, un objeto más específico puede actuar polimórficamente solo con un objeto más general.
 - Para la implementación en una interfaz, el objeto se declara con la misma funcionalidad definida en la interfaz. Esto permite al objeto actuar polimórficamente como una interfaz.
 - Un objeto puede usarse indistintamente con cualquiera de sus superclases sin necesidad de hacer un cast.
 - Un objeto puede usarse indistintamente con cualquier interfaz que lo implemente sin necesidad de hacer un cast.
 - Cuando un objeto de la subclase es polimórficamente usado como un objeto de la superclase, las funciones más específicas no están disponibles.
 
- Puesto
     que Sanar es una interfaz, el método curar lo implementan las clases
     Medico, Traumatólogo, Neurologo y Oftalmologo (estas 3 últimas porque
     heredan de Medico)
 
o  
Public void m1(Medico m){
}
o  
Public void m1(Medico m){
}
o  
Public void m1(Medico m){                       
m.graduar();                                  
 
 
}
m1(o);
m1(c);                         
o   Medico m=new Oftalmologo();
o.graduar();
o  
Public void m1(Medico m){
m.curar();
}
m1(o);
o  
Public void m1(Medico m){
}
Oftalmologo o=new Oftalmologo();
m1(o);
o  
Public void m1(Medico m){
}
Oftalmologo o =new Oftalmologo();
m1(o);
o  
Public void m1(Medico m){
}
Medico m =new Medico();                               
m1(m);
o   Medico m=new Oftalmologo();                              
c.curar();
- Si el método curar() fuese abstracto en la clase Medico:
 
o  
Public void m1(Medico m){
}
o  
Public void m1(Medico m){
m.curar();                                    
}
m1(m);
o  
Public void m2(Sanar s){
s.curar();                                   
}
Curandero c=new Curandero();                 
Curandero esta implementado Sanar y esta si
contiene curar(), que se implementa en alguna clase hija de Medico.
Curandero esta implementado Sanar y esta si
contiene curar(), que se implementa en alguna clase hija de Medico.
m2(c);
o  
Public void m2(Sanar s){
s.curar();                                   
}
m2(o);
o  
Public void m3(Sanar s){
 s.curar();                   
o.graduar();


No hay comentarios:
Publicar un comentario