由於名字上的相似
,我總是搞不清過載和重寫的差別
,我曾經用過得到底是過載還是重寫我也不清楚
.這兩個放在一起比較的原因就是
,名字上總是混為一談.
如今總結如今區分一下還為時不晚,也兩個東西可能沒有什麼對照性,單單僅僅是名字相似,可是就是由於名字相似。當自己用的時候總是說,恩。這裡用到了過載,哦,不是是重寫。哎呀。知道即可了,愛叫啥叫啥吧。
方法過載:
提供了建立同名的多個方法的能力
,可是這些方法須要使用不同的引數型別.
注意:方法過載的時候
,兩個方法名同樣
,可是引數型別或個數必需要有所不同.長處
:能夠在不改變原方法的基礎上新增功能
,多以它的可擴充套件能力好.
比如:
class cat
public cat() //將構造方法過載
public string shout() }
這樣執行出來以後就是:我的名字叫無名喵。
理解了過載,接下來就是重寫了。首先要知道什麼是重寫。
重寫:子類能夠將父類實現替換為他自己的實現。這種方法就是重寫。
以下就來詳細再回想一下重寫吧。
在機房重構裡,組合查詢視窗有好幾個。所以一樣的**太多了,爽快一下就用了一下模板方法。然而這裡就用到了重寫。
先了解一下模板方法,
小蔡說過:
沒有學過設計模式,那麼對於多型。乃至物件導向的理解多半都是膚淺和片面的。
模板方法:
定義乙個操作中的短髮的骨架,而將一些步驟延遲到子類中,使得子類能夠不改變乙個演算法的結構就可以衝定義該演算法的某些特定步驟。
所以結合設計模式去理解會更好的。
接著談我的機房重構,由於組合查詢的幾個視窗的同樣之處有非常多,所以**也是一樣的,太多的反覆**必定是不好的,所以我就建立乙個父視窗作為模板,這樣就把不變的僅僅寫一遍。在子類中實現與父類不同的方法。
其有用的就是繼承。
子類以自己的方式實現父類的功能(方法重寫)
比如:我們在父視窗裡寫好同樣部分的**,可是每乙個視窗須要的資料庫的表都不一樣。這怎麼辦。就在父視窗裡面定義好虛函式。
protected overridable function gettable() as string
return ""
end function
在子視窗裡重寫,比方學生基本資訊裡面。須要獲取
t_student
表,就在子視窗裡重寫子。
'定義虛函式的gettable,獲取不同的資料庫的表名
protected overrides function gettable() as string
groupinquire.gettable = "t_student" '獲得繼承視窗所須要的表
return groupinquire.gettable
end function
這就是方法重寫,通過總結,事實上這兩個東西有啥可比性啊,就由於名字相似,總是混為一談。這裡的混為一談是當自己用的時候不確定自己用的叫什麼。總是含糊的過去了。這倆個東西差距可大,不能含糊,總結一下。區分一下。自己以後就能夠肯定的回答這是過載還是重寫了。
事實上。沒有什麼是不能放到一起比較著學習的。嘿嘿。
懂了是關鍵啊。
重寫與過載
override 為覆蓋又叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆...
過載與重寫
過載與重寫 面對過載與重寫有時會像失憶一樣,將這兩個內容搞混。在實際運用中,我們一般是不會混的。但在給別人講述的過程中,可能會出現張冠李戴將兩個名詞搞混,這是不利於傳播的。讓我們來一起加深一下 過載 相同函式名稱,不同引數或不同引數型別。舉個例子 class oneclass public doub...
重寫與過載
重寫方法的規則 1.引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.2.返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載.3.訪問修飾符的限制一定要大於被重寫方法的訪問修飾符 public protected default private 4.重寫方法一...