programming is terriblelessons learned from a life wasted

On the Notion of Inheritance (1996) by Antero Taivalsaari

On the Notion of Inheritance (1996) by Antero Taivalsaari (citeseerx.ist.psu.edu)

One of the most intriguing—and at the same time most problematic—notions in object-oriented programming is inheritance. Inheritance is commonly regarded as the feature that distinguishes object-oriented programming from other modern programming paradigms, but researchers rarely agree on its meaning and usage.

Yet inheritance is often hailed as a solution to many problems hampering software development, and many of the alleged benefits of object-oriented programming, such as improved conceptual modelling and reusability, are largely credited to it. This article aims at a comprehensive understanding of inheritance, examining its usage, surveying its varieties, and presenting a simple taxonomy of mechanisms that can be seen as underlying different inheritance models.

Inheritance, like OO is one of those concepts that is ill-defined, with a variety of different implementations and uses. This paper is an excellent summary of the different forms and uses of inheritance. Delegation vs Composition, Subclassing vs Code-Reuse, Late vs Early binding, and various other technicalities often glossed over.