Inheritance is a pillar of object-oriented programming. Overriding is a subclass’ ability to replace the implementation of a superclass’ method. Even though class inheritance has been around for more than three decades, we actually know little about how overriding is employed.
This paper is a deep and extended study of how overriding is used across a large corpus of open-source software programs. One of the authors’ results is that overriding is intensively used: every subclass is likely to override at least one inherited method.
Indeed, this is the largest case study done in the field. The state of the art is extended with new metrics to measure different aspects of overriding. Little of object orientation is exploited by the everyday tools we use to build software. The authors’ remarkable study will help readers better understand inheritance.
This paper is for readers interested in how object orientation is used to build software.