Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación
Orientados a Objetos
Conferencia # 7
Herencia y polimorfismo
+baseArea() : float
Ligadura
Cylinder c = new Cylinder(10,5);
float v = c.volume();
volume() baseArea()
Cylinder Cylinder
Ligadura temprana
Cylinder c;
c = new HollowCylinder(10,9,3);
float v = c.volume();
Cylinder.volume() Cylinder.baseArea()
HollowCylinder.baseArea()
Ligadura tardía
Cylinder c;
c = new HollowCylinder(10,9,3);
float v = c.volume();
Cylinder.volume() Cylinder.baseArea()
HollowCylinder.baseArea()
Herencia en Java
• Clases abstractas y concretas
• Visibilidad de atributos
• Métodos abstractos
• No hay herencia múltiple
Consideraciones
• Una clase abstracta no está obligada a tener
métodos abstractos.
• Toda clase que contenga algún método
abstracto o no proporcione implementación
para algún método abstracto declarado en
sus superclases debe ser declarada como
una clase abstracta.
• Los métodos abstractos deben tener la
misma firma a lo largo de toda la jerarquía.
Métodos abstractos
• No tienen implementación
• Solo en clases abstractas
• Sintaxis:
abstract<tipo><nombre método>(…)
Polimorfismo en Java
• La ligadura es tardía por defecto.
• Los constructores no son
polimórficos (static)
• Para especificar ligadura temprana:
métodos final o métodos privados.
¿Cómo lograrlo?
Conclusiones
Propiedades de la POO
vs.
Tecnología