Chapter 9. Inheritance

The relationship between a class and its subclass often starts being simple but gets more complicated over time. A subclass will often depend on its parent more intimately than will a separate class, but it can go too far.

A key challenge is deciding what a class is versus what a class has. A class structure often starts with inheritance and moves to a more compositional style over time.

Smells Covered

  • Refused Bequest

  • Inappropriate Intimacy (Subclass Form)

  • Lazy Class

See also these other smells related to inheritance:

Refused Bequest


  • A class inherits from a parent, but throws an exception instead ...

Get Refactoring Workbook now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.