class A
{
public virtual void F()
{
Console.WriteLine("A");
}
} class B : A
{
public override void F()
{
Console.WriteLine("B");
}
}
class C : B
{
(1) public override void F() { Console.WriteLine("C"); }
(2) public new void F() { Console.WriteLine("C"); }
} class Tester
{
static void Main()
{
A a = new C();
a.F();
}
}
在class C中,如果用(1),结果就是“C”;如果用(2),结果就是“B”,为什么啊?
请问new和override到底什么区别啊,没搞定,请赐教,谢谢!
{
public virtual void F()
{
Console.WriteLine("A");
}
} class B : A
{
public override void F()
{
Console.WriteLine("B");
}
}
class C : B
{
(1) public override void F() { Console.WriteLine("C"); }
(2) public new void F() { Console.WriteLine("C"); }
} class Tester
{
static void Main()
{
A a = new C();
a.F();
}
}
在class C中,如果用(1),结果就是“C”;如果用(2),结果就是“B”,为什么啊?
请问new和override到底什么区别啊,没搞定,请赐教,谢谢!
{
(1) public override void F() { Console.WriteLine("C"); }
(2) public new void F() { Console.WriteLine("C"); }
} class C : B
{
public override void F() { Console.WriteLine("C"); }
} A a = new C();
a.F(); 还是原来的上下结构,因为a的类型是C,最终调用的是C的方法class C : B
{
public new void F() { Console.WriteLine("C"); }
} A a = new C();
a.F(); C说我要独立门户,这个新的F跟基类的F无关,因为变量类型是基类A,你调用F(),它在自己的继承类找同一上下结构的方法F,最终找到B的
能否再拓开谈谈它们之间的关系?谢谢!