LSP:如果對每一個類型為T1的對象的O1,都有類型為T2的對象O2,使得以T1定義的所有的程序P在所有對象O1都代換為O2時,程序P沒有發生變化,那么類型T2是類型T1的子類型。換言,一個軟件實體如果使用的是一個基類的話,那么一定適合與其子類,而且它根本不能察覺出基類對象與子類對戲的區別。
eg:
假設有兩個類,一個是Base類,一個是Sub類,并且Sub類是Base類的子類。那么有一個方法如果可以接受基類對象b的話:method(Base b),那么它必然也可以接受一個子類對象s,也即有:method(Sub s);LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能會收到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的功能。LSP反之就不成立了。