$ X: d: H; y8 T i2 i使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。 1 g- J+ _( h1 a' W; h
& B& M+ F' a8 S9 H6 `# H3 u. B, a k% i- y
[ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects Of Derived(Sub) Classes Without Knowing It ] : [2 G) Y5 o* T5 `% J
/ T; e0 s) C8 R
' k6 `/ C j5 x) RLiskov替换法则 % d) x" V7 }& ~9 T6 t" d+ d
; t9 {) k% P$ T
& c t* ~, g# s9 F* I# k
1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。 $ q* q- R, f, q. z $ X8 d5 ^6 W# K6 A ; S }5 j1 \3 o4 Q2.例如: ) b. e2 m9 B: t/ n) P. D
, n6 y7 f1 Y0 G, {: h- i& g% ~* T- G6 ?) }
方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作) - i: p$ ^) w6 ~9 k" J6 h) v* I$ o. P: K- O& ^5 Q5 C4 x- H j! Y
& ~# z: k# c5 h% m1 ~9 Y
但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 ' I7 A2 M7 R7 B$ N5 C+ W$ e
# u& i: }" r9 Y# n7 c. b8 ]% m
* F9 T1 e+ i' |) D 5 G2 I# }$ r- _- B3 \" t1 v, k& R$ B& ~6 r2 b; c- y7 y, p2 P7 C