There are two types of inheritance:
- interface/API based -- this is supported in modern languages via interfaces, traits, etc.
- implementation/code based -- modern languages tend to only support single inheritance; they tend to also support default method implementations on the interfaces/traits
It's interesting that Python does support multiple inheritance.
> interfaces, traits, etc.
Those are actually mechanisms for achieving polymorphism.
Inheritence inherently (heh) consists of "inheriting" parent class' internals and having ability to extend them. It is basically composition, polymorphism and monkeypatching in a trench coat.