📝Interface Inheritance vs Implementation Inheritance

In programming, there are actually two types of inheritance: Interface Inheritance (aka subtyping) and Implementation Inheritance (aka inheritance).

Implementation Inheritance is usually discouraged (Composition over inheritance), and many modern languages include mechanisms for interface inheritance and mechanism for implementation inheritance (e.g., Rust, Go).

Functional programming languages have interface inheritance only, and implementation inheritance can be considered uniquely OOP feature. (Is there a functional programming language with implementation inheritance?)

See also: