对于派生类,基类属性声明是合适的,但实现并非总是合适的。因此需要一种机制在派生类种使用自定义的实现来重写(override)基类中的实现
1、virtual修饰符
C#支持重写实例方法和属性,但不支持字段和静态成员的而重写。为进行重写,基类必须将允许重写的成员标记为virtual
public class PadItem { public virtual string Name { get; set; } } public class Contact : PadItem { public string FirstName { get; set; } public string LastName { get; set; } public override string Name { get { return $"{FirstName}{LastName}"; } set { string[] names = value.Split(‘ ‘); FirstName = names[0]; LastName = names[1]; } } }
若拿掉virtual则会报错,若拿掉override则会警告。
重写成员会造成“运行时”调用最深的或者派生最远的实现
原文:https://www.cnblogs.com/TheLin/p/14398140.html