前幾篇部落格說了重寫和過載。今天主要說重構,順便比較一下三者。
重構就是通過調整程式**改善軟體的質量、效能,使其程式的設計模式和架構更趨合理。提高軟體的擴充套件性和維護性。
通俗點說,重構。就是改善既有**的設計,讓**更加的符合物件導向規則。
而重寫是出如今多型裡的。virtualkeyword宣告虛方法,子類通過override來實現方法重寫。在父類裡宣告了乙個模糊的方法,並不給出詳細的行為,在子類裡,通過重寫父類中的這種方法,讓這種方法例項化,去適合子類。
過載,通俗來講,它的作用就是能夠讓我們的選擇很多其它。比方在類中宣告了乙個方法。可是在我實際呼叫時,這種方法有時候符合我想要的。有時候不符合,就比方乙個嬰兒出生。父母可能在出生前就想好了嬰兒的名字。也可能出生後也沒有想好。假設僅僅用建構函式的話,僅僅有乙個方法,不能滿足我的要求,這時候就要用到方法過載,之前的的方法保留,再新增乙個方法。接著這個樣例,假設父母給嬰兒娶了名字,那麼。用原有的方法。假設沒有取名字,就會用過載後的方法。
先說重構的樣例。
接著上次的比賽。如今又來了小牛和小羊報名叫聲比賽,應該怎樣做呢?讓我們先來看一下在多型中是怎麼做的。
如今。全然能夠再建立兩個類,模仿狗和貓。繼承animal。其它除了叫聲以外保持不變,這樣。完畢後。能非常完美的執行,而且有我們想要的功能。
可是,沒有錯誤不一定代表著優秀,我們發現,除了四種動物的叫聲不同外。其它差點兒沒有不論什麼差異,這就犯了反覆的毛病。
既然有反覆的。就要把反覆的提取出來放到animal中,可是,animal是個抽象的類,沒有詳細的叫聲,我們就把叫聲部分改成另外乙個方法:getshoutsound。接下來讓我們來實現一下。
class animal這時候子類就很easy了。比方,我們還讓貓來叫。protected virtual string getshoutsound()
}
class cat : animal其餘幾個動物都和貓一樣,改下叫聲就好了。public cat(string name):base(name)
{}protected override string getshoutsound()
}
儘管詳細動物沒有了shout方法,可是它繼承於animal,animal的shout方法就能夠被詳細的動物繼承。當然。外界也也能夠呼叫詳細動物的這種方法。
這就是重構。發現了之前的**有錯誤。反覆等,就重構**,使其更為出色的完畢功能。
這篇部落格,本來想直接寫重構,可是,重構,重寫,過載,都有個重字,更應該比較著去學習它們,簡單來說。重構就是當你發現**的不優之處時,去改動它的結構。去優化它。
重寫就是定義乙個虛方法,子類去重寫,方法名,引數,返回值等必須是同樣的;過載也必須是同名的。但其引數和返回值能夠不同。他相當於什麼呢?我的理解就是,給你乙個預設的方法,再給你乙個其它方法,你能夠使用預設的方法,也能夠使用另外乙個。但這兩個方法名是同樣的。
通過總結這篇部落格。我發現對照學習能更好的促使我們去發現。去記憶一些東西,分享給大家。
C 重構 過載 重寫
來,我們問一下自己 建構函式是幹什麼的?重構是什麼?重寫是什麼?過載是什麼?重寫和過載聯絡的是什麼?重構與過載的區別是什麼?重寫和重構又是什麼關係?它們分別怎麼用?重構是重新構什麼?重寫又是在重寫什麼?過載載的又是什麼?哈哈,撒了吧 建構函式 是一種特殊的方法。主要是用來在建立物件的時初始化物件,即...
c 重寫重載重定義
include 34 includeusing namespace std 過載 重寫 重定義 重寫發生在兩個類之間 父類和子類 過載必須發生在乙個類之間 引數列表 重寫分為兩類 1.虛函式重寫 前面加上virtual關鍵字,會發生多型2.非虛函式重寫 重定義 class parent virtua...
方法過載,重構,覆蓋,重寫的區別
方法過載還是比較好理解的,就是在類的內部,定義多個方法,這些方法的方法名字相同,引數型別和引數個數不同,注意,返回值型別並不能區分過載 看 public void show int a,double b public void show double c public intshow double ...