.net重寫和重載的區(qū)別
.net重寫和重載的區(qū)別
接觸過(guò)編程代碼的人都知道重載和重寫,但是很多人來(lái)說(shuō),總是不能很好的區(qū)別它們,其實(shí)區(qū)別它們很容易,只要你常常練習(xí)編代碼,不久就能從本質(zhì)上將他們區(qū)分開。
小編給你舉一下代碼例子,可以通過(guò)代碼了解一下
OverrideNew.cs
namespace NET.MST.Third.OverrideNew
{
public class OverrideNew
{
static void Main(string[] args)
{
//測(cè)試重寫和隱藏的功能
OverrideBase b = new OverrideBase();
NewBase nb = new NewBase();
Console.WriteLine(ob.ToString() + ":" + ob.GetString());
Console.WriteLine(nb.ToString() + ":" + nb.GetString());
Console.WriteLine("\r\n");
//重寫和隱藏的區(qū)別
Base bb = ob as Base;
Base nbb = nb as Base;
Console.WriteLine(obb.ToString() + ":" + obb.GetString());
Console.WriteLine(nbb.ToString() + ":" + nbb.GetString());
Console.Read();
}
}
//基類
class Base
{
public virtual string GetString()
{
return "我是基類";
}
}
//重寫
class OverrideBase : Base
{
public override string GetString()
{
return "我重寫了基類";
}
}
//隱藏
class NewBase : Base
{
public new virtual string GetString()
{
return "我隱藏了基類";
}
}
}
}
//重寫
class OverrideBase : Base
{
public override string GetString()
{
return "我重寫了基類";
}
}
//隱藏
class NewBase : Base
{
public new virtual string GetString()
{
return "我隱藏了基類";
}
}
}
看完了上面的代碼,是不是能理解重載和重寫了呢,下面小編再給你說(shuō)明一下重載和重寫的定義。
重載
同一個(gè)作用域內(nèi)發(fā)生(比如一個(gè)類里面),定義一系列同名方法,但是方法的參數(shù)列表不同。這樣才能通過(guò)傳遞不同的參數(shù)來(lái)決定到底調(diào)用哪一個(gè)。而返回值類型不同是不能構(gòu)成重載的。
重寫
繼承時(shí)發(fā)生,在子類中重新定義父類中的方法,子類中的方法和父類的方法是一樣的。