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 "是是是";
        }
    }
原文地址:https://www.cnblogs.com/Sea1ee/p/10330568.html