In some languages like Java there is a distinction between class and interface
inheritance. The problem with inheritance between classes in Java is that it
always inherits interface and implementation. Among classes, C++ distinguishes
implementation-only (modifier private) and interface (modifier public)
inheritance. The latter term may be misleading: public inheritance in C++
inherits both, the base-class’ interface as well as its implementation.