前幾篇博客說了重寫和重載,今天主要說重構,順便比較一下三者。
重構就是通過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提高軟件的擴展性和維護性。通俗點說,重構,就是改善既有代碼的設計,讓代碼更加的符合面向對象規則。
而重寫是出現在多態裡的,virtual關鍵字聲明虛方法,子類通過override來實現方法重寫。在父類裡聲明了一個模糊的方法,並不給出具體的行為,在子類裡,通過重寫父類中的這個方法,讓這個方法實例化,去適合子類。
重載,通俗來講,它的作用就是可以讓我們的選擇更多,比如在類中聲明了一個方法,但是在我實際調用時,這個方法有時候符合我想要的,有時候不符合,就比如一個嬰兒出生,父母可能在出生前就想好了嬰兒的名字,也可能出生後也沒有想好,如果只用構造函數的話,只有一個方法,不能滿足我的要求,這時候就要用到方法重載,之前的的方法保留,再增加一個方法,接著這個例子,如果父母給嬰兒娶了名字,那麼,用原有的方法,如果沒有取名字,就會用重載後的方法。
class Animal { …… public string Shout() { string result = ""; for (int i = 0; i < shoutNum; i++) result += getShoutSound() + ","; return "我的名字叫" + name + " " + result; } protected virtual string getShoutSound() { //“得到叫聲”,虛方法,讓子類重寫,只需要給繼承的子類使用,所以用protected修飾符。 return ""; } }這時候子類就非常簡單了。比如,我們還讓貓來叫。
class Cat : Animal { public Cat():base() {} public Cat(string name):base(name) {} protected override string getShoutSound() { return "喵" } }其余幾個動物都和貓一樣,改下叫聲就好了。雖然具體動物沒有了Shout方法,但是它繼承於Animal,Animal的Shout方法就可以被具體的動物繼承,當然,外界也也可以調用具體動物的這個方法。 這就是重構,發現了之前的代碼有錯誤,重復等,就重構代碼,使其更為出色的完成功能。