利斯科夫替代原則

可替代性是 Barbara Liskov 在 1987 年會議主題演講中引入的物件導向程式設計的一個原則,如果類 BA 類的子類,那麼無論 A 在哪裡,都可以使用 B

class A {...}
class B extends A {...}

public void method(A obj) {...}

A a = new B(); // Assignment OK
method(new B()); // Passing as parameter OK

當型別是介面時,這也適用,其中物件之間不需要任何層次關係:

interface Foo {
    void bar();
}

class A implements Foo {
    void bar() {...}
}

class B implements Foo {
    void bar() {...}
}

List<Foo> foos = new ArrayList<>();
foos.add(new A()); // OK
foos.add(new B()); // OK

現在,列表包含不是來自同一類層次結構的物件。