前言:
目前各位老铁们对“关键字virtual”都比较关怀,大家都需要了解一些“关键字virtual”的相关文章。那么小编同时在网摘上收集了一些关于“关键字virtual””的相关资讯,希望看官们能喜欢,咱们一起来学习一下吧!结论:
多个子类中有部分类行为相同,使用virtual方法在基类中提供默认实现
所有子类实现迥异,但他们应具有相同的行为,使用abstract关键字标记
使用场景:
virtual方法告诉子类:我很贴心地提供了默认实现,你可以直接使用我,如果你觉得我不够好,你可以重写我。
abstract方法告诉子类:虽然我没办法提供默认实现,但是我警告你,如果你继承了我你就必须实现我,否则你将无法通过编译。
概念:
virtual 关键字声明方法可以在派生类中被重写
abstract关键字声明方法必须由派生自抽象类的非抽象类实现
栗子:
/// <summary> /// abstract标记的类无法实例化 /// </summary> public abstract class BaseClass { public string Property { get; set; } //如果你继承了BaseClass你必须实现MustImplementMethod方法 public abstract void MustImplementMethod(); //如果你继承了BaseClass你可以根据需要重写YouCanOverride方法 public virtual void CanOverrideMethod() { Console.WriteLine("Hello World"); } //普通方法 public void NormalMethod() { Console.WriteLine(this.Property); } } /// <summary> /// 子类 /// </summary> public class ChildClass : BaseClass { /// <summary> /// 如果继承了BaseClass,必须实现MustImplementMethod方法 /// </summary> public override void MustImplementMethod() { throw new NotImplementedException(); } /// <summary> /// 如果继承了BaseClass,可以选择重写CanOverrideMethod方法 /// </summary> public override void CanOverrideMethod() { base.CanOverrideMethod(); base.Property = "Hello World"; base.NormalMethod(); } }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #关键字virtual