virtual、abstract、interface区别以及用法
virtual 用于在基类中的使用的方法,使用的情况为:
情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。
情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。
情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。
通俗地讲:老爸用virtual告诉儿子:"孩子,你要工作,找不到事做就跟我一样扫地"。
儿子用override告诉全世界:"我要改变家族的使命,不再扫地,我要编程!"。
如果儿子不用override地话,那他只能继承家族的事业就是扫地!
abstract:
抽象类不能实例化,只能被继承。抽象类中可以有构造方法,一般方法,抽象方法,但是抽象方法并不具体实现,抽象方法必须在派生类中使用override来实现。同时,具有抽象方法的类一定是抽象类。
-----abstract 与virtual : 方法重写时都使用 override 关键字
Interface:
public interface IPerson
{
IPerson(); //错误
string name; //错误
public void getIDcard();//错误
void getName(); //right
void getAge(string s); //right
}
实现interface的类
1.与继承类的格式一致,如 public class Chinese:IPerson{}
2.必须实现 interface 中的各个方法
{
IPerson(); //错误
string name; //错误
public void getIDcard();//错误
void getName(); //right
void getAge(string s); //right
}
实现interface的类
1.与继承类的格式一致,如 public class Chinese:IPerson{}
2.必须实现 interface 中的各个方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了