1、先說重構,接著這篇的例子(http://www.linuxidc.com/Linux/2014-01/95950.htm),貓和狗類繼承父類動物,但是他們都有叫這個方法,除了叫的聲音不一樣之外,其余的都是一樣的,這樣造成了代碼的重復,如果要修改這個方法得同時修改這兩個子類,非常的麻煩。這時候重構就起了很重要的作用。它將重復的代碼提到父類,再加一個獲得叫的方法就可以了。具體實現如下:
class Animal
{
//將共有代碼提到父類
protected override void shout()
{
return getShoutSound();
}
//獲得聲音的方法
protected virtual string getShoutSound()
{
return "";
}
}
//類貓繼承動物
class Cat : Animal
{
Protected override string getShoutSound()
{
return "喵"
}
}
//狗類繼承動物
class Dog:Animal
{
Protected override string getShoutSound()
{
return "旺"
}
}
2、重載一般特征:方法名是相同的,但是參數類型或個數必須要有所不同。舉個例子:
class Dog
{
private string name;
public Dog()
{
name="黑貝";
}
public Dog(string name)
{
this.name=name;
}
}
就像上面的關於對名字name的初始化就用到重載,如上面的構造函數Dog(),函數名相同,但是參數是不同的,一個有參數,一個沒有參數。這就是方法重載。