小樱知识 > 生活常识virtual(编程:virtual方法或abstract方法有什么区别)

virtual(编程:virtual方法或abstract方法有什么区别)

提问时间:2022-11-18 06:11:16来源:小樱知识网


结论:

多个子类中有部分类行为相同,使用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(编程:virtual方法或abstract方法有什么区别)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题

内容来源于网络仅供参考
二维码

扫一扫关注我们

版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。

本文标题:virtual(编程:virtual方法或abstract方法有什么区别)

本文地址:https://www.xiaoyin02.com/shcs/798278.html

相关文章