C# abstract,virtual 修饰符
abstract(抽象):该abstract
修饰符指示要修改的东西有缺失或不完整的实现。abstract修饰符可以与类,方法,属性,索引器和事件一起使用。abstract
在类声明中使用修饰符来指示类仅用于其他类的基类。标记为抽象或包含在抽象类中的成员必须由派生自抽象类的类实现。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract
virtual(虚拟):该virtual
关键字用于修改方法,属性,索引器或事件声明,并允许在派生类中重写它。例如,任何继承它的类都可以覆盖此方法。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/virtual
abstract方法必须在abstract 类中,父类不需要写完成方法,只用定义方法名,字段名,等等,子类必须重写。virtual方法可以写完成过程,子类可重写,也可不从写。
public abstract class BaseTest { public virtual string Name { get; set; } public virtual int Age { get; set; } public virtual string GetName() { return "sealee"; } public virtual int GetAge() { return 15; } public abstract string YourName { get; } public abstract int YourAge { get; } public abstract string GetYourName(); public abstract int GetYourAge(); } public class Test : BaseTest { public override string YourName => "myName"; public override int YourAge => 9; public override int GetYourAge() { return 15; } public override string GetYourName() { return "xixi"; } public override string Name { get => "不不不"; set => base.Name = value; } public override string GetName() { return "是是是"; } }