回 帖 发 新 帖 刷新版面

主题:关于override new virtual

using System;
class A { 
         public virtual  void F() 
         {
          Console.WriteLine("A.F"); 
         }
        }
class B: A { public override void F() 
             { 
             Console.WriteLine("B.F"); 
             }
           }
class Test 
{
    static void Main() { 
                B b = new B();
                 b.F();
                 A a = b;
                a.F();
                
    } 
}
以上程序输出
B.F
B.F
现将class B: A { public override void F()中的override 换成new或 virtual
程序输出
B.F
A.F
问题:
从上例看,override 才是真正的覆盖,在c++中我们可以用一个指向基类的指针调用派生类的实例,而在C#中,这三者之间有什么本质区别?有什么作用?(MSDN中的示例没什么用)

回复列表 (共4个回复)

沙发

参考FAQ中的相关内容

板凳

jzyray 兄每次的回答都是言简意赅,呵呵

但FAQ中并未解释清楚NEW 和 VIRTUAL 之间的区别.
有空请指教

3 楼

virtual表明处于一个函数override队列中,而override就是指定参与该队列。

new修饰的函数不要求基类中用virtual修饰

4 楼

百度一下嘛```

我来回复

您尚未登录,请登录后再回复。点此登录或注册