- 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.
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