Ian Joyner it is not OO that is so important with all its associated hype, but the use of cleanly designed high level languages which take large scale rapid software development seriously. Critique Name Overloading Name overloading allows the same name to refer to two or more different entities. The problem with an ambiguous name is whether the resultant ambiguity is useful, and how to resolve it, as ambiguity weakens the usefulness of names to distinguish entities.
Polymorphism is achieved by redefining or overriding routines.
Be careful not to confuse overriding and overloading. Templates Java might be in the best position to implement a flexible class substitution mechanism for genericity, as it has not implemented genericity yet. Eiffel provides the maximum flexibility since implementation details are hidden, the need is greatly reduced for either the programmer to manually inline, or for the compiler to automatically inline. Consistency due to inheritance is fundamental to object-oriented design. The main problem with virtual is that it forces the base class designer to guess that a function might be polymorphic in one or more derived classes.