比較C# new和override
作者:佚名
這里介紹C# new和override,override是指“覆蓋”,是指子類覆蓋了父類的方法,new是指“隱藏”,是指子類隱藏了父類的方法。
C# new和override都會覆蓋父類中的方法。那它們兩者之前有什么區(qū)別呢?
override是指“覆蓋”,是指子類覆蓋了父類的方法。子類的對象無法再訪問父類中的該方法。new是指“隱藏”,是指子類隱藏了父類的方法,當然,通過一定的轉(zhuǎn)換,可以在子類的對象中訪問父類的方法。所以說C# new和override的區(qū)別是覆蓋和隱藏
以下是代碼:
- <PRE class=csharp name="code">class Base
- {
- public virtual void F1()
- {
- Console.WriteLine("Base's virtual function F1");
- }
- public virtual void F2()
- {
- Console.WriteLine("Base's virtual fucntion F2");
- }
- }
- class Derived:Base
- {
- public override void F1()
- {
- Console.WriteLine("Derived's override function F1");
- }
- public new void F2()
- {
- Console.WriteLine("Derived's new function F2");
- }
- }
- class Program
- {
- public static void Main(string[] args)
- {
- Base b1 = new Derived();
- //由于子類覆蓋了父類的方法,因此這里調(diào)用的是子類的F1方法。也是OO中多態(tài)的體現(xiàn)
- b1.F1();
- //由于在子類中用new隱藏了父類的方法,因此這里是調(diào)用了隱藏的父類方法
- b1.F2();
- }
- }
以上介紹C# new和override的區(qū)別是覆蓋和隱藏。
【編輯推薦】
責任編輯:佚名
來源:
博客園