您好,登錄后才能下訂單哦!
1:方法重寫:就是在基類中的方法用virtual關鍵字來標識,然后在繼承類中對該類進行重寫
(override),這樣基類中的方法在子類中已經(jīng)被重寫了,基類中的方法在子類中已經(jīng)失去了功能
了。當讓基類的對象的引用直接指向繼承類的對象時(多態(tài)性),調用該方法則是調用的繼承類中重
寫的方法。
2:方法隱藏:無論基類中的方法是否用了virtual關鍵字,繼承類中都可以用new關鍵字(如果不用new
的話,不會產生錯誤,但會生成一個編譯警告)將基類中的方法隱藏,所謂隱藏就是隱藏,不像重
寫,重寫就是基類中的舊方法在子類中已經(jīng)不存在了,而隱藏是基類中的方法和子類中重寫得到的新
方法都存在。所以當讓基類的對象的引用直接指向繼承類的對象時(多態(tài)性),調用該方法則是調用
的基類的方法。
代碼如下:
class BaseClass { public void functionA() { Console.WriteLine("BaseFunctionA ==="); } public virtual void functionB() { Console.WriteLine("BaseFunctionB ==="); } } class DerivedClass : BaseClass { new public void functionA() { Console.WriteLine("DerivedFunctionA ==="); } public override void functionB() { Console.WriteLine("DerivedFunctionB ==="); } } class Program { static void Main(string[] args) { BaseClass b2 = new DerivedClass(); b2.functionA();//BaseFunctionA === b2.functionB();//DerivedFunctionB === Console.WriteLine("-----"); BaseClass b = new BaseClass(); b.functionA();//BaseFunctionA === b.functionB();//BaseFunctionB === Console.WriteLine("-----"); DerivedClass d = new DerivedClass(); d.functionA();//DerivedFunctionA === d.functionB();//DerivedFunctionB === Console.WriteLine("-----"); } }
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。