利斯科夫替代原則
可替代性是 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
現在,列表包含不是來自同一類層次結構的物件。