Inheritance Vs Subtyping
Subtyping enables a given type to be substituted for another type or abstraction. Subtyping is said to establish an is-a relationship between the subtype and some existing abstraction, either implicitly or explicitly, depending on language support. The relationship can be expressed explicitly via inheritance in languages that support inheritance as a subtyping mechanism. For example, the following C++ code establishes an explicit inheritance relationship between classes B and A, where B is both a subclass and a subtype of A, and can be used as an A wherever a B is specified (via a reference, a pointer or the object itself).
class A { public: void DoSomethingALike const {} }; class B : public A { public: void DoSomethingBLike const {} }; void UseAnA(A const& some_A) { some_A.DoSomethingALike; } void SomeFunc { B b; UseAnA(b); // b can be substituted for an A. }In programming languages that do not support inheritance as a subtyping mechanism, the relationship between a base class and a derived class is only a relationship between implementations (a mechanism for code reuse), as compared to a relationship between types. Inheritance, even in programming languages that support inheritance as a subtyping mechanism, does not necessarily entail behavioral subtyping. It is entirely possible to derive a class whose object will behave incorrectly when used in a context where the parent class is expected; see the Liskov substitution principle. (Compare connotation/denotation.) In some OOP languages, the notions of code reuse and subtyping coincide because the only way to declare a subtype is to define a new class that inherits the implementation of another.
Read more about this topic: Inheritance (object-oriented Programming)
Famous quotes containing the word inheritance:
“Late in the afternoon we passed a man on the shore fishing with a long birch pole.... The characteristics and pursuits of various ages and races of men are always existing in epitome in every neighborhood. The pleasures of my earliest youth have become the inheritance of other men. This man is still a fisher, and belongs to an era in which I myself have lived.”
—Henry David Thoreau (18171862)