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.StartLuxury.Start再调用base.Start(),触发Car.Start- 最终依次输出
I am a Car、I am a Luxury、I am a BMW三段文本
内容的提问来源于stack exchange,提问作者TheChosenOne94
相关产品推荐
相关产品推荐

