我只是有一个基本的问题:函数重载和覆盖
public class virtualTest
{
public virtual void vTest()
{
Console.WriteLine("Base Class");
}
}
public class derivedVirtualTest : virtualTest
{
public override void vTest()
{
Console.WriteLine("Derived Class");
}
}
在这里,我已经使用功能与功能VTEST()
重写但是,如果我:
public class virtualTest
{
public void vTest()
{
Console.WriteLine("Base Class");
}
}
public class derivedVirtualTest : virtualTest
{
public void vTest()
{
Console.WriteLine("Derived Class");
}
}
中移除了虚拟和覆盖各个地方的关键字,然后还有代码作品。
这怎么可能?
或者如果代码工作正常,没有虚拟和重写,那么override和virtual(整个函数覆盖)的用法是什么?
编辑:
我的方法,通过它我打电话上述类
static void Main(string[] args)
{
derivedVirtualTest objderivedVirtualTest = new derivedVirtualTest();
objderivedVirtualTest.vTest();
virtualTest objvirtualTest = new virtualTest();
objvirtualTest.vTest();
Console.ReadLine();
}
你说这段代码有效,但你从来没有显示过你如何测试它。也发布该代码。这是最重要的部分。 – 2014-11-05 06:45:19
@SriramSakthivel刚刚发布。请看看它 – 2014-11-05 06:48:10
请参考[this](http://stackoverflow.com/questions/392721/difference-between-shadowing-and-overriding-in-c)要使用多态,你需要编译时间类型为basetype不是派生类型。只需将'derivedVirtualTest objderivedVirtualTest'更改为'virtualTest objderivedVirtualTest'来查看差异。 – 2014-11-05 07:00:00