利斯科夫替代原则
可替代性是 Barbara Liskov 在 1987 年会议主题演讲中引入的面向对象程序设计的一个原则,如果类 B
是 A
类的子类,那么无论 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
现在,列表包含不是来自同一类层次结构的对象。