我是否正确理解了C#中类属性继承的核心概念?
你的类与继承设计完全正确!
从你的描述来看,你精准抓住了C#中继承的核心逻辑:基类封装所有子类共有的属性/行为,子类继承基类并扩展专属特性。咱们用代码把你的设计落地,更直观地验证:
基类 Car 的实现
public class Car { // 所有汽车共有的属性 public string Manufacturer { get; set; } public string Model { get; set; } // 可选:添加构造函数简化对象初始化 public Car(string manufacturer, string model) { Manufacturer = manufacturer; Model = model; } }
子类 SportsCar 的实现
继承自Car,并添加跑车专属属性:
public class SportsCar : Car { // 跑车专属属性 public string Color { get; set; } public int TopSpeed { get; set; } // 子类构造函数需要调用基类构造函数 public SportsCar(string manufacturer, string model, string color, int topSpeed) : base(manufacturer, model) { Color = color; TopSpeed = topSpeed; } }
子类 FamilyWagon 的实现
同样继承自Car,添加家用旅行车的专属属性:
public class FamilyWagon : Car { // 家用旅行车专属属性 public double Mpg { get; set; } public int BootSize { get; set; } // 假设用整数表示后备箱容积(单位:升) public FamilyWagon(string manufacturer, string model, double mpg, int bootSize) : base(manufacturer, model) { Mpg = mpg; BootSize = bootSize; } }
简单的使用示例
// 创建跑车实例 var mySportsCar = new SportsCar("Ferrari", "488 GTB", "Rosso Corsa", 330); Console.WriteLine($"跑车:{mySportsCar.Manufacturer} {mySportsCar.Model},颜色{mySportsCar.Color},最高时速{mySportsCar.TopSpeed}km/h"); // 创建家用旅行车实例 var myWagon = new FamilyWagon("Volvo", "V90", 45.6, 560); Console.WriteLine($"旅行车:{myWagon.Manufacturer} {myWagon.Model},油耗{myWagon.Mpg}mpg,后备箱容积{myWagon.BootSize}L");
额外说明
- 子类通过
:符号继承基类,自动获得基类的Manufacturer和Model属性,无需重复定义,这就是继承的代码复用核心优势。 - 子类构造函数必须通过
: base(...)调用基类的构造函数,确保基类的属性被正确初始化。 - 如果需要,你还可以给基类添加通用方法(比如
StartEngine()),子类会自动继承;若基类方法标记为virtual,子类还能根据自身需求重写实现。
内容的提问来源于stack exchange,提问作者Paul_G
相关产品推荐
相关产品推荐

