C#中的virtual、abstract和接口

工作两年了 现在回头看了一下发现基础非常不牢固 会的全是一些经常写的东西 项目里边接触少的或者是没有接触到的忘得是一干二净 现在开个帖子重新温习一下 可能会有错误内容 希望大家指正

 

virtual和abstract如果用来修饰方法 所修饰的方法必须是公有的 也就是需要加上public

1.virtual 方法(虚方法)

基类中声名虚方法必须实现 但是方法里边可以没有内容 eg:

public virtual Test(){}

派生类中如果没有重写该虚方法 派生类中的实例调用该方法则会调用到基类中的该方法

如果派生类使用override重写该方法后 则实例会调用重写后的该方法

2.abstract 方法(抽象方法)

此关键字只能用于在抽象类中修饰方法 且不能实现该方法   就是说只有抽象类才有抽象方法 当然也可以有不抽象的方法 eg:

abstract class Amclass

{

      public adstract Test();

}

抽象类无法实例化 (没有对象 手动滑稽脸)

抽象方法的实现必须在派生类中使用override 进行实现(必须实现就算只加一个大括号)

3.interface 接口

此关键字表示这是一个接口 

接口和抽象类的区别

1.抽象类虽然没有对象 但他仍然是一个类 他可以定义自己的字段 属性 方法(甚至可以实现非抽象的方法)

接口只能定义属性、素引器、事件和方法声明(只是声明哦)

2.抽象类只能被单继承 而接口可以多继承

细节类的有个大佬解释的非常完美 适用场景也解释的非常明白 我还没有完全读通 就不误导大家了

上链接:https://blog.csdn.net/fxh_hua/article/details/4464739

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一梭键盘任平生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值