Liskov Substitution Principle

Liskov Substitution Principle

Substitutability is a principle in object-oriented programming. It states that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e., objects of type S may be substituted for objects of type T) without altering any of the desirable properties of that program (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address entitled Data abstraction and hierarchy. It is a semantic rather than merely syntactic relation because it intends to guarantee semantic interoperability of types in a hierarchy, object types in particular. Liskov and Jeannette Wing formulated the principle succinctly in a 1994 paper as follows:

Let be a property provable about objects of type . Then should be provable for objects of type where is a subtype of .

In the same paper, Liskov and Wing detailed their notion of behavioral subtyping in an extension of Hoare logic, which bears a certain resemblance with Bertrand Meyer's Design by Contract in that it considers the interaction of subtyping with pre- and postconditions.

Read more about Liskov Substitution Principle:  Principle, Origins, A Typical Violation

Famous quotes containing the words substitution and/or principle:

    Virtue is the adherence in action to the nature of things, and the nature of things makes it prevalent. It consists in a perpetual substitution of being for seeming, and with sublime propriety God is described as saying, I A—.
    Ralph Waldo Emerson (1803–1882)

    We rail at trade, but the historian of the world will see that it was the principle of liberty; that it settled America, and destroyed feudalism, and made peace and keeps peace; that it will abolish slavery.
    Ralph Waldo Emerson (1803–1882)