利斯科夫替代原则

可替代性是 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

现在,列表包含不是来自同一类层次结构的对象。