- Nuevas consideraciones sobre la generalización - Por qué olvidar el tipo de un objeto - El secreto - Acoplamiento de las llamadas a métodos - Especificación del comportamiento correcto - Ampliabilidad - Error: "sustitución" de métodos private - Error: campos y métodos static - Constructores y polimorfismo - Orden de las llamadas a los constructores - Herencia y limpieza - Comportamiento de los métodos polimórficos dentro de los constructores - Tipos de retorno covariantes - Diseño de sistemas con herencia - Sustitución y extensión - Especialización e información de tipos en tiempo de ejecución
"En ocasiones me he preguntado, Sr. Babbage, si introduce en la máquina datos erróneos, ¿podrá suministrar las respuestas correctas? Debo confesar que no soy capaz de comprender qué tipo de confusión de ideas puede hacer que alguien plantee semejante pregunta". Charles Babbage (1791-1871)
El polimorfismo, la abstracción de datos y la herencia son las tres características esenciales de un lenguaje de programación orientado a objetos.