一、基本定義
構造函數:是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與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");
}
}
四、區別
經過上面的兩個簡單例子,現在,總結一下重載和重寫的區別。
閱讀更多 老孔說編程 的文章