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