0 _) ~, z- t# ^, f2 C: L$ j- u T- n% m+ y( W
使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。 2 x; v' I# ^: D4 G
( Z- g( G+ Q- R" V' q7 r9 K# k2 S# D s k u
[ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects Of Derived(Sub) Classes Without Knowing It ] ( K' v/ E6 q+ y6 B0 |% ?
) A4 o) g9 g" s/ ^6 U8 l( T1 j2 H! W
2 K/ D1 i5 Y* B# M3 ^) B, @
Liskov替换法则 4 m' s% T5 P% f3 b [7 l/ ?0 F 7 I* m: T& ]( V3 m0 y* b o* _9 s9 Q( g0 z; T2 s
1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。 4 Z* G. u2 @* `* v0 J8 j3 \2 N, @6 `+ d* F2 [5 G
+ T: D, j* ^4 |! t! ?' @ {1 g/ K
2.例如: * T; k- P$ g* S9 g( M( z( N9 |: X: _2 d9 u, h
! j/ ^) b' H+ a; H* r) _( V方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作) : W. m# a) x7 y ) C" f" K! w8 N( H; E/ k* f5 a& J4 m- a) G4 c
但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 * k8 ^" {3 Q! R; f