設計模式六大原則(三)黎克特制替換原則

2021-09-07 19:07:32 字數 1029 閱讀 9045

定義:所有使用父類的地方都必須可以使用其子類。

規定:
1.不能重寫父類非抽象方法。

2.子類中可以增加自己的特性。

3.無論是重寫還是過載,如與父類衝突,必須保證執行父類的方法。

特點:
1.能用子類的地方不一定能用父類

2.能用父類的地方一定能用子類

舉例子:

建立乙個家族:

public

abstract

class

family

abstract

public

void

getname()

;}

建立個人:

public

class

personal

extends

family

}

現在喊該家族的人,要有乙個人來應答:

family family =

newpersonal()

;log.w(

"列印"

,"你姓什麼?");

family.

getsurname()

;log.w(

"列印"

,"你的名字是?");

family.

getname()

;

列印結果:

2019-01-07 15:03:14.699 w/列印: 你姓什麼?

2019-01-07 15:03:14.700 w/列印: 此家族必須姓楊,不可修改!

2019-01-07 15:03:14.700 w/列印: 你的名字是?

2019-01-07 15:03:14.700 w/列印: 個人可以自己修改名字!

如果重寫了getsurname()方法,就違背了黎克特制替換原則。

設計模式六大原則(2) 黎克特制替換原則

肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士 barbara liskov 提出來的。定義1 如果對每乙個型別為 t1的物件 o1,都有型別為 t2 的物件o2,使得以 t1定義的所有程式 p 在所有的物件...

設計模式六大原則(2) 黎克特制替換原則

肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士 barbara liskov 提出來的。定義1 如果對每乙個型別為 t1的物件 o1,都有型別為 t2 的物件o2,使得以 t1定義的所有程式 p 在所有的物件...

設計模式六大原則(2) 黎克特制替換原則

黎克特制替換原則 強調的是類繼承時,不要重寫或者過載父類中已經實現的方法,只實現抽象方法。繼承包含這樣一層含義 父類中凡是已經實現好的方法 相對於抽象方法而言 實際上是在設定一系列的規範和契約,雖然它不強制要求所有的子類必須遵從這些契約,但是如果子類對這些非抽象方法任意修改,就會對整個繼承體系造成破...