主题:关于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中的示例没什么用)
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中的示例没什么用)