我只是有一個基本的問題:函數重載和覆蓋
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