設計模式之向上轉型

2021-08-31 14:58:23 字數 1312 閱讀 8652

都說看原始碼提公升很快,而看原始碼的要有設計模式的基礎,否則會很難過的。為此我挑選了本不錯的設計模式書,學習中發現所謂的設計的模式,並不是多麼高深的 東西,僅僅是利用物件的多型性的技巧而已,而且向上轉型幾乎無處不在。

現在言歸正題,先說向上轉型,我們都知道物件既可以作為它自己本身型別來使用,也可以作為它的基型別使用。而這種將對某個物件的引用視為對其基型別的引用的作法被稱作向上轉型。

先說下策略模式(定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換),這是乙個美好的家庭,老漢的兩個兒子都要盡孝心,老漢這挑個兒子一起生活,我們來看下**。

先定義乙個介面,這是父親

public inte***ce strategy

再新增兩個實現類,這是大兒子

public class concretestrategy1 implements strategy

}

這是小兒子

public class concretestrategy2 implements strategy

}

封裝角色,想和哪個兒子過,叫來就行

public class context

public void doanything()

}

重點來了,看下呼叫

public class client

}

再看下**模式(為其他物件提供一種**以控制對這個物件的訪問),也不知道例子恰當否。

主題介面,**來檔案了,要造林

public inte***ce subject

真實主題類,種樹工人,負責種樹

public class realsubject implements subject 

}

**類,這是政績,怎麼能少了我們**,我來指揮

public class proxy implements subject 

public void request()

}

情景類

public class client

}

發沒發現這兩個模式有點相像的地方,沒錯,策略模式中也有乙個**,只不過這個**沒有實現介面。

先談兩個模式,其他的以後在說,歡迎拍磚,哈

向下轉型,向上轉型

package cn.dali.code24 向上轉型 父類引用指向子類物件 格式 父類名稱 物件名 new 子類名稱 向下轉型 當我們使用父類引用指向子類物件的時候,我們想把父類物件轉為子類物件時,需要向下轉型 向下轉型就是乙個還原動作。格式 子類名稱 物件名 子類名稱 父類物件 注意 乙個父類有...

向上轉型向下轉型

在引用資料型別中,只有有繼承關係的型別才能進行型別轉換 型別轉換只是轉換看待物件的引用的型別,物件本身沒有也不可能參與轉換 父類引用可以自動指向子類物件,但只能訪問和呼叫到來自於父類的屬性和行為 子類的引用不能指向父類或其它子類物件,就算強轉也會導致執行失敗並丟擲classcastexception...

C 多型之向上轉型

基類中的虛函式允許派生類繼承時重寫此函式 虛函式使用virtual關鍵字修飾 重寫時有兩種重寫方式 1.使用override重寫 覆蓋父類中的原函式 無論是父類還是子類的例項都去呼叫子類中重寫的方法 2.使用new 可省略 重寫 隱藏父類中的原函式 隱藏方法中父類的例項呼叫父類的方法,子類的例項呼叫...