04.07 c#重寫和重載的區別介紹

一、基本定義

構造函數:是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。((C#中講面向對象的繼承的時候講了,我是沒怎麼在意,師哥那麼一說,才。。。。。)

重寫:當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,參數個數、類型都完全一致時,就稱子類中的這個方法重寫了父類中的方法。

重載:一個類中的方法與另一個方法同名,但是參數表不同,這種方法稱之為重載方法。

二、實現方法

重寫:通常,派生類繼承基類的方法。因此,在調用對象繼承方法的時候,調用和執行的是基類的實現。但是,有時需要對派生類中的繼承方法有不同的實現。例如,假設動物類存在“跑"的方法,從中派生出馬和狗,馬和狗的跑得形態是各不相同的,因此同樣方法需要兩種不同的實現,這就需要"重新編寫"基類中的方法。"重寫"基類方法就是修改它的實現或者說在派生類中重新編寫。

重載:在一個類中用相同的名稱但是不同的參數類型創建一個以上的過程、實例構造函數或屬性。

三、舉例說明

1,重寫

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace OverrideTest

{

class Program

{

static void Main(string[] args)

{

my HHX = new my();

HHX.talk();

}

public class you

{

public virtual void talk()

{

Console.WriteLine("one");

}

}

public class my : you

{

public override void talk()

{

Console.WriteLine("two");

}

}

}

2,重載

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace 重載

{

class Program

{

static void Main(string[] args)

{

string s = null;

show(s);

object a = "123";

show(a);

}

static void show(string s)

{

Console.WriteLine("string");

}

static void show(object o)

{

Console.WriteLine("object");

}

}

四、區別

經過上面的兩個簡單例子,現在,總結一下重載和重寫的區別。

c#重寫和重載的區別介紹


分享到:


相關文章: