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.