c#隱藏和重寫基類方法的異同
最近正在學習c#,對其中的方法重寫和隱藏的概念很是模糊,現在將其歸納如下:
1:方法重寫:就是在基類中的方法用virtual關鍵字來標識,然後在繼承類中對該類進行重寫(override),這樣基類中的方法已經被重寫了,已經失去了功能了。當讓基類的物件的引用直接指向繼承類的物件時(多型性),呼叫該方法則是呼叫的繼承類的方法。
2:方法隱藏:無論基類中的方法是否用了virtual關鍵字,繼承類中都可以用new關鍵字(如果不用new的話,不會產生錯誤,但會生成乙個編譯警告)將基類中的方法隱藏,所謂隱藏就是隱藏,不像重寫,重寫就是原來的(基類中)已經不存在了,而隱藏是原來的還存在。所以當讓基類的物件的引用直接指向繼承類的物件時(多型性),呼叫該方法則是呼叫的基類的方法。
**如下:複製**
public class baseclass
public virtual void functionb()
}public class derivedclass:baseclass
public override void functionb()
}
當利用多型性執行下面**時:
baseclass basefunction=new derivedclass();
basefunction.functiona();
basefunction.functionb();
得到的結果是:
basefunctiona
derivedfunctionb
總結:
重寫(override)就是將父類的方法給覆蓋掉,父類/子類呼叫的都是子類的方法
隱藏(new)就是將父類的方法暫時隱藏,訪問父類則呼叫父類的方法,訪問子類則呼叫子類的方法(看等號前面)
c 隱藏基類方法和重寫基類方法的區別
最近重新學習c 中基礎,找到了隱藏基類方法和重寫基類方法的一點區別,二者都是在派生類中定義了與基類中相同的方法,相同點派生類物件將執行各自的派生類中的方法,不同點,在向上轉型後,重寫基類方法的呼叫的是派生類的方法,而隱藏基類呼叫的是基類的方法,具體實驗 class program 如果乙個方法被子類...
c 隱藏基類方法和重寫基類方法的區別
最近重新學習c 中基礎,找到了隱藏基類方法和重寫基類方法的一點區別,二者都是在派生類中定義了與基類中相同的方法,相同點派生類物件將執行各自的派生類中的方法,不同點,在向上轉型後,重寫基類方法的呼叫的是派生類的方法,而隱藏基類呼叫的是基類的方法,具體實驗 class program 如果乙個方法被子類...
C 隱藏基類方法和重寫
本質上來說,是隱藏子類中基類的方法,但在子類中仍然可以訪問該功能。示例如下 namespace 隱藏基類和重寫 public class duck animal class program 執行結果為 值得注意的是,若在子類duck中不使用new,可以正常執行,但會生成乙個警告如下,說明隱藏了乙個基...