Polymorphism is a concept made possible by inheritance in which a name
denotes instances of many different classes, as long as they are related
by a common super-class.
Example:
public void paint() {
Iterator it = shapes.iterator();
while (it.hasNext())
{
// polymorphism:
shape can refer to squares, //circles,
triangles, etc.
Shape shape =
(Shape)shapes.next();
shape.draw();
}
}
|
Example: Polymorphism solving design problem (encapsulation violation)
BAD: (a) Bad use of Constraint - an Account can have either
Person OR Corporation associated with it. Violates encapsulation
GOOD: (b) Use polymorphism via inheritance to represent the
disjunction.