阅读量:0
在 C# 中,虚拟类不能直接被继承
- 创建一个基类(BaseClass):
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()
。
- 创建一个派生类(DerivedClass),并将基类的虚拟方法覆盖实现:
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" } }
在这个测试代码中,我们创建了一个 BaseClass
对象和一个 DerivedClass
对象。当我们调用 Method1()
时,派生类覆盖了基类的实现。而当我们调用 Method2()
时,派生类没有覆盖基类的实现,因此它使用了基类的实现。