Sobes.tech
Junior — Middle

Explain the Liskov substitution principle and how it is applied in object-oriented programming.

sobes.tech AI

Answer from AI

The Liskov Substitution Principle (LSP) is one of the five SOLID principles in object-oriented programming. It states that objects of a subclass should be interchangeable with objects of the base class without altering the correctness of the program.

In simpler terms, if class B inherits from class A, then objects of class B should behave in such a way that they can be used in place of objects of class A without unexpected errors or changes in logic.

This is achieved by ensuring that the subclass does not:

  • Violate the invariants of the base class.
  • Narrow the preconditions of methods (require more strict input data).
  • Extend postconditions (provide less guaranteed results).

Example:

class Bird {
    func fly() {
        print("Bird is flying")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Sparrow is flying")
    }
}

// Violating LSP by adding a class Penguin that cannot fly
class Penguin: Bird {
    override func fly() {
        fatalError("Penguin cannot fly")
    }
}

In this example, Penguin violates LSP because it cannot be used in place of Bird without errors. A better approach would be to separate the flying bird interface.

Thus, LSP helps create class hierarchies that are easy to extend and maintain, avoiding unexpected errors when replacing objects.

Explain the Liskov substitution principle and how it… - sobes.tech