Inheritance and reusability

Object-oriented programming has been widely acclaimed as a technology that will support the creation of reusable software, particularly because of the inheritance facility. However, the limited practical impact has not justified the acclaim. We believe this lack of success is due not to any particular shortcoming in inheritance, but to widespread misunderstanding of the way the technology supports reusability. We explore the connection between inheritance and reusability. We show that inheritance does support reusability, but does so in ways that are not well understood.