C#接口及抽象类以及虚方法

C#接口及抽象类以及虚方法
一.接口
一个比喻:
众所周知,我们的电脑,需要连接外接设备,比如U盘,需要通过USB连接,那么问题来了,世界上生产U盘的厂家有千万个,怎么保证他们生产的U盘可以插到我们的电脑上呢,他们定义了一个规则,规定了usb接口的结构大小,这样,无论是哪个厂家生产的U盘,都必须按照这个规则生产,这就是接口的定义。
接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:

如上图,我们定义了一个动物的接口,它有吃和叫两种方法,那么如果我们再声明一个类,继承这个IAnimal接口,那么就必须实现这两个方法

由此我们可以知道,接口定义了一组规则,它规定了继承接口的类或接口必须实现它所定义的规则,即接口的方法。也就是“如果你是。。。,那么必须能。。。”。同时,它还是同类型事物的抽象体现。比如上文的例子,dog是animal的一种,pig也是animal的一种,他们都有eat,和shut的方法。
二.抽象类
类是一个具有相同特征和行为的抽象,而抽象类(class 前加上 abstract)没有指出行为的具体细节,而由他的子类去实现相应的行为。
注意:一个非密封类(密封类使用 sealed 修饰)可以派生子类,子类可以是抽象类或非抽象类。
代码示例:

三.虚方法
•用virtual修饰的方法叫做虚方法
•虚方法可以在子类中通过override关键字来重写
•常见的虚方法:ToString() Equals
代码示例如下

虚方法与抽象方法最大的区别:虚方法要有方法体,而抽象方法不允许有方法体。
四.接口和抽象类的区别
抽象类和接口的区别:

1、抽象类中可以有实现成员(非抽象方法),而接口中的方法只有声明没有实现;

2、抽象类中可以有字段,接口中不能有字段,但可以有属性;

3、抽象类的成员可以使用公有或其他修饰符,接口中成员是隐式公有的,不需要修饰;

4、抽象类是概念的抽象,接口注重行为,抽象类不支持多重继承,而一个类可以实现多个接口。
--------------------- 
作者:zfy1994 
来源:CSDN 
原文:https://blog.csdn.net/weixin_39714231/article/details/88951068 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值