This is a survey of object-oriented programming languages (like Java and Eiffel but not like UW's Cecil). It is surprisingly hard to make the polymorphism facility in the language both useful and safe (for example, Eiffel's, as originally formulated, is useful but unsafe; the problem was realized late in the game). Bruce shows how to do it, and he has written papers on adding such a facility to Java, but to me it seems contrived.