核心是必须先调用父类构造函数(默认隐式调用父类无参构造,也可显式指定),再初始化子类自身成员。
- 隐式调用:子类构造函数无显式指定时,默认用 base() 调用父类无参构造(父类必须存在无参构造,否则报错);
- 显式调用:用 base(参数) 调用父类指定构造(如 public Student(string name) : base(name) {} ),或 this(参数) 调用子类其他构造(构造函数重载复用);
- 关键规则: base / this 必须是构造函数体第一行代码,且不能同时使用。
