You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#多态技术问询:不修改Main方法及新增方法如何输出全部三段文本

解决方案

要在不修改Main方法、不新增任何方法的前提下让程序输出全部三段文本,需利用C#虚方法重写特性调整现有类定义,具体操作如下:

1. 将Car类的Start方法改为虚方法

给Car的Start方法添加virtual关键字,允许子类重写该方法:

public class Car
{
    public virtual void Start()
    {
        Console.WriteLine("I am a Car");
    }
}

2. 修改Luxury类的Start方法为重写方法并调用父类实现

给Luxury的Start方法添加override关键字,并在方法内部调用base.Start()触发父类Car的Start逻辑:

public class Luxury : Car
{
    public override void Start()
    {
        base.Start();
        Console.WriteLine("I am a Luxury");
    }
}

3. 调整BMW类的继承链并修改Start方法

让BMW继承自Luxury而非直接继承Car,同时给Start方法添加override关键字,调用base.Start()触发Luxury的Start逻辑:

public class BMW : Luxury
{
    public override void Start()
    {
        base.Start();
        Console.WriteLine("I am a BMW");
    }
}

执行逻辑

当运行Car c = new BMW(); c.Start();时,由于Start是虚方法,会调用实际实例BMW的Start方法:

  • BMW.Start先调用base.Start(),触发Luxury.Start
  • Luxury.Start再调用base.Start(),触发Car.Start
  • 最终依次输出I am a Car、I am a Luxury、I am a BMW三段文本

内容的提问来源于stack exchange,提问作者TheChosenOne94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:45:56