在 C# 中,虛擬類不能直接被繼承
public class BaseClass
{
public virtual void Method1()
{
Console.WriteLine("Method in Base Class");
}
public void Method2()
{
Console.WriteLine("Method in Base Class");
}
}
在這個例子中,BaseClass
有一個虛擬方法 Method1()
和一個非虛擬方法 Method2()
。
public class DerivedClass : BaseClass
{
public override void Method1()
{
Console.WriteLine("Overridden Method in Derived Class");
}
}
在這個例子中,DerivedClass
覆蓋了基類的虛擬方法 Method1()
。
class Program
{
static void Main(string[] args)
{
BaseClass baseObj = new BaseClass();
baseObj.Method1(); // 輸出 "Method in Base Class"
baseObj.Method2(); // 輸出 "Method in Base Class"
DerivedClass derivedObj = new DerivedClass();
derivedObj.Method1(); // 輸出 "Overridden Method in Derived Class"
derivedObj.Method2(); // 輸出 "Method in Base Class"
}
}
在這個測試代碼中,我們創(chuàng)建了一個 BaseClass
對象和一個 DerivedClass
對象。當(dāng)我們調(diào)用 Method1()
時,派生類覆蓋了基類的實(shí)現(xiàn)。而當(dāng)我們調(diào)用 Method2()
時,派生類沒有覆蓋基類的實(shí)現(xiàn),因此它使用了基類的實(shí)現(xiàn)。