法则4:Liskov替换法则(LSP) 7 N1 h: O8 w) Z5 @4 g
# q& Z7 B* L1 S0 ^1 ? w
, x. ~0 f' `) t- u3 f使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。 8 w2 f2 r- a. A! T7 d% f {6 L0 X, a- f# O4 B& D
2 C0 ^3 c8 H% r6 [. |; J# d [ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects Of Derived(Sub) Classes Without Knowing It ] * Q# m0 d) K/ `5 r0 _( \
- A' b5 o& T7 R( S5 y% o$ n) X' U5 W# j" S
Liskov替换法则 & l. \$ A' x1 r& G6 ], m4 I4 ^
" t0 d' W+ o. A/ {9 g
! |1 w- @7 P2 W1 d* e1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。 % w7 o e9 W4 a! b! ]+ y, v; v7 p
' s" c! |4 _0 O7 B4 K A4 h. k 7 }. |5 S, ]4 B: Q" ` U+ P2.例如: E- g' C+ f! O4 `
0 u2 t' ~; z3 M! k. K4 D# ~, X8 @+ k' Q* ]4 _
方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作) " ?! F' T0 Z" s
, E% r' e8 ~2 d% v7 ~" u( g, ]
% ^5 Y5 W% F7 |/ L' W9 d 但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 * t; k) G) C& F' G( c$ a1 i $ y# v% f' F0 k. x- P: R$ d! P4 I0 Z: X4 }1 G# ?# F