* k, [* N; T$ ^! J7 Z; L + g. W: T9 `/ v+ b' J* u |# A8 [使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。 ) X6 P. q3 [4 V$ X2 ?8 d+ ^/ w6 E5 I 9 i0 B+ f/ {( T( q6 v m: G, J8 ~, E5 r ^: ^
[ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects Of Derived(Sub) Classes Without Knowing It ] 2 I0 h! d& d) ~5 M. h! F - P% q; y) p1 J" j3 R2 M$ p2 Z( Q* F+ A; C' y/ E
Liskov替换法则 - o" Y R; Z# K+ m7 F5 m- b5 z
, n7 K, Q& x' b% {- \7 y0 n: J- w6 F7 N% H3 C4 z m/ u
1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。 6 E4 \1 H5 a5 F ' X1 d- W; U& S9 i d , t! T% e/ C. B2.例如: 6 Z# f* A T/ f
. c* |& e* R& W7 I& {" G& Q! p5 l( P& G# X* r7 W: M- T
方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作) ; V7 t4 ^5 Z. P) o% L' z. E& U5 ]
8 R" I D* c: E! P5 C1 `0 }
2 q- e5 L/ Z; w7 F( s% z, e 但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 # I( K0 t5 h5 m) W1 x
; U' e. K. {, ~, O& ^