【設計模式】面向物件小結——重寫與過載
通過對《大話設計模式》附錄的學習,讓我對面向物件技術有了更深一層的理解!下面是我畫的一張導圖,是我對面向物件技術的總體概括。這篇文章的主要內容,就是圍繞這張圖,來講述我的理解。。
由圖得知,我將面向物件分為三個部分:基本、特點及其功能。它們之間像是一種層層遞進的關係。
如果沒有基本的抽象思想,將具有相同屬性和功能的物件進行整合,那麼也就沒有面向物件技術,更不可能產生面向物件特點。所以,抽象是核心,是基本;如果沒有封裝、繼承和多型,那麼類與類、物件與物件、類與物件之間,就沒有了聯絡,就不能實現對程式碼的重複利用,也就與面向過程沒有區別了。所以,它們是必要元素,是特點;介面、泛型和委託,是其基本和特點的集中體現,使面向物件技術發揚光大。。
對於面向物件的基本和特點,都是老生常談,我沒什麼可多說的,大家可以看我文章《【設計模式】面向物件基礎》裡面進行了詳細的介紹。。現在我最想解釋的是多型中的過載和重寫,以前我對它倆真是傻傻分不清楚,現在,我一定要將它們弄明白。。
重寫
重寫的使用是建立在繼承關係上的,它使子類在繼承父類的基礎上,增加新的功能,使語言結構更加豐富。
規則:1、父類與子類方法的定義名稱必須完全相同
2、。。。。。。。。引數列表。。。。。。。
3、。。。。。。。。返回型別。。。。。。。
4、子類方法不能比父類方法有更加嚴格的訪問許可權
過載
過載是多型的集中體現,是讓類以統一的方式處理不同型別資料的一種手段。從這一點上,就可以看出它與重寫的不同。
規則:1、方法名稱必須完全相同
2、可以有不同的返回型別,前提是引數列表必須不完全相同。例如,不同的型別、個數和順序
3、只有方法才能進行過載。最典型的例子就是過載構造方法
4、過載時,可以丟擲不同的異常
重寫VS過載
區別點 |
重寫 |
過載 |
定義 |
方法名稱相同 |
同理 |
引數列表相同 |
不同 |
|
返回型別相同 |
無所謂 |
|
範圍 |
發生在繼承類中 |
發生在類中 |
小結
通過再一次學習,終於捋清了重寫與過載的區別,我很高興。同時,也再次體現出對比的重要性。總結未完,下一篇部落格《【設計模式】面向物件小結——介面、泛型、委託》
相關推薦
【設計模式】面向物件小結——重寫與過載
通過對《大話設計模式》附錄的學習,讓我對面向物件技術有了更深一層的理解!下面是我畫的一張導圖,是我對面向物件技術的總體概括。這篇文章的主要內容,就是圍繞這張圖,來講述我的理解。。
【設計模式】面向物件六大原則
主要內容 關於面向物件六大原則 單一職責原則(Single Responsibility Principle) 縮寫為SRP。 對於一個類而言,應該僅有一個引起它變化的原因。或者說一個類中應該是一組相關性很高的函式、資料的封裝。大意就是一個類應該只做一件事情,這就是職
【設計模式】之物件池模式--JDBC連線池簡單實現案例
文章目錄 物件池設計模式 物件池設計模式的目標 問題 討論 結構 示例 核驗單 經驗法則 連線池模式示例程式碼 ObjectPool.java
【設計原則】面向物件程式設計的六大原則
參考文章: 一、單一職責原則: 全稱:“Single-Responsibility Principle” 說明:就一個類而言,應該只專注於做一件事和僅有一個引起它變化的原因。所謂職責,我們可以理解他為功能,就是設計的這個類功能應該只有一個,而不是兩個或更多。也可以理解為
【設計模式】(三)-附錄A:方法過載
概念 方法過載是指在一個類中定義多個同名的方法,但要求每個具有不同的引數或引數的個數。 我們可以理解為方法過載可在不改變原方法的基礎上,新增功能。方法過載算是提供了函式可擴充套件的能力。 注意事項 1.並不是只有構造方法可以過載,普通方法也是可以過載的。 2.方法過載時,兩個方法
【設計模式】7種常用的面向物件設計
如何同時提高一個軟體系統的可維護性和可複用性是面向物件設計需要解決的核心問題,也是用於評價一個設計模式的使用效果的重要指標之一 設計模式到底有什麼用?簡單來說,設計模式至少有如下幾個用途: (1) 設計模式來源眾多專家的經驗和智慧,它
【設計模式】Observer(觀察者)模式----物件行為模式
1,意圖 定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知 並 被自動更新。 2,別名 依賴(Dependents),釋出-訂閱模式(Publish-Subscribe) 3,動機  
【設計模式】物件的克隆-原型模式
原型模式是物件的建立模式。原型模式使用原型例項指定建立物件的型別,通過克隆原型來建立新的物件,其實就是複製物件。 原型模式在我們的生活中處處都存在,大家應該用過很多軟體,都
【設計模式】簡單工廠模式和工廠方法模式
產生 for plm nbsp osc rbm play stp mage > 簡單工廠模式 顧名思義,此模式的設計結構是簡單的,核心是生產對象。 一般來說,運用工廠模式生產的對象應該是構建對象的過程比較復雜的,獲取構建對象的過程在日後可能發生變更的。 簡單工廠
【設計模式】設計模式基本概念
ada 機制 通過 font size 單個 無法 模式空間 使用 一、設計模式空間 類模式:處理類和子類之間的關系,通過繼承建立,靜態。 對象模式:處理對象之間的關系,動態性。 1、創建型:對象的創建。 類:Factory Method 將對象的部分創建工作延遲到子類
【設計模式】學習進度
包含 creat rod eth 什麽 method 觀察 不同 是什麽 1、策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。 eg 鴨子 2、觀察者模式:定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的
【設計模式】單例模式
amp 就會 保持 占用 back obj 線程不安全 only 大量 一、單例模式的定義 單例模式( Singleton Pattern) 是一個比較簡單的模式, 其定義如下:Ensure a class has only one instance, and provid
【設計模式】建造者模式
object lan pat alt pri 創建對象 private 關心 turn 1、定義 1.1 標準定義 建造者模式( Builder Pattern) 也叫做生成器模式, 其定義如下: Separate the construction of a complex
【設計模式】簡單工廠模式
jsb 工廠模式 tle virt -m 虛函數 ios efault def 以面向對象的思想和簡單工廠模式。寫一個C++計算器程序,代碼例如以下: #include <iostream> using namespace std;
【設計模式】中介者模式
col com fin 每一個 mediator std 一對一 類的方法 -1 1、 定義 1.1 標準定義 中介者模式的定義為:Define an object that encapsulates how a set of objectsinteract.Med
【設計模式】責任鏈模式
receive req evel 自己 缺點 結果 改革 == 引用 1、定義 1.1 標準定義 Avoid coupling the sender of a request to its receiver by giving more than one object a
【設計模式】策略模式
concrete 方法 行為 無法 策略模式 避免 mint his 多態 1、定義 1.1標準定義 策略模式(StrategyPattern)是一種比較簡單的模式,也叫做政策模式(PolicyPattern)。其定義如下:Defineafamilyofalgorithms
【設計模式】 觀察者模式
new mes 一對多 建議 ios between 生存 兩個 開始 1、定義 1.1 標準定義 觀察者模式(Observer Pattern)也叫做發布訂閱模式(Publish/subscribe),它是一個在項目中經常使用的模式,其定義如下:Define a one-
【設計模式】代理模式:靜態代理,動態代理,spring aop
spring 實現接口 找到 master 代碼 -s result java 統一 代理模式分為靜態代理和動態代理。我們拿鏈家來舉例子,我們本人是真實的對象,有真實的業務需求:需要去找房子;鏈家是中介,是代理類,他來幫我執行找房子的這個操作。 靜態代理: 1.實現一個
【設計模式】裝飾者模式-明月裝飾了你的窗子
return rgs light 刪除 clas pan net public 不改變 裝飾者模式 使用裝飾者模式,可以動態的給一個對象添加一些額外的職責。這適用於,我們只希望給某個對象而不是整個類添加一些功能的場景。通過使用含有某個特定功能的類來“包裹”原始的類,提