C#中的接口和类有什么异同?

 我来答
cdscdsfafds
2020-10-29
知道答主
回答量:15
采纳率:0%
帮助的人:1990
展开全部

实在看不下去国内那些装X的大佬程序员了。别人一问接口和类的区别联系,窜上来就扯什么public,什么属性索引,什么谁能继承谁,谁不能继承谁的,咋地,我还要画张地图去造迷宫呀。

看到我的回答,我觉得很多入门的程序员都能走出这个边问边记边理解,最后发现还是不知所云的怪圈。

总体来说,有了类,才有了接口,有了接口才有了抽象类,不要怀疑这个顺序,没错,和你在网上看到的都不一样,很不理解吧。看完回答,你或许发现,这样理解反而好很多。

首先是继承,类是单一继承的,这个应该都有百度看到过,但是这句话是个坑,单一继承只是从子类的角度去说的。因为一个子类只能有一个父类,但是一个父类是可以有很多个子类的。

言归正传,抽象类和类在继承上是完全没有区别的,不要被abstract关键字迷惑,这个东西只是对子成员进行一个限制作用的。奥,补充一点就是抽象类不能被实例化(算是继承层面唯一用到abstract的一点),这个可以作为本能认知,你说我都这么抽象了,你还去实现我,阿拉丁呀。

接着是接口,接口的继承关系就比较好理解了,一个类可以继承多个接口,接口可以继承多个接口,抽象类也可以继承多个接口,所以,接口真的就是规范。

问题来了,为什么我认为先有接口,后有抽象类呢?

场景是这样的,你想写一大批类,但是发现这些类有很多公用属性,比如id,创建时间,创建人等等,所以你想写一个通用类,来把这些东西写一遍就过,所以有了基类。

你想规范每个类的功能方法,所以有了接口,但是你发现只是规范,没有实现,这也就意味着你需要把所有接口方法都实现一遍,可是你发现很多方法和属性一样,也是重复的,比如获取id,数据库的增删改查等等,所以你又想把这些方法统一的进行实现。这个需求简单来说,就是又想约束,又想有部分实现,这时候出现了抽象类。是的,约束作用的就是抽象类里的抽象方法,实现的就是抽象类里的真实方法。


补充:虚方法和抽象方法。抽象方法只能在抽象类中,而且他的子类必须重写抽象方法,谁让人家起到约束作用呢。虚方法可以在任何类中,除了密封类,因为这个东西不能被继承。虚方法有方法体,抽象方法没有的。虚方法可以被重写,也可以不被重写,但是抽象方法必须被实现的子类重写,这个有点碰瓷的意思。子类你撞了我,你必须给我实现我的所有虚幻的愿望。

最后就是这个虚方法,这个东西你重写了,重写后的方法比原始的优先级就高,不重写,就去调用原始的虚方法

漫奕琛宁媪
2020-01-26 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:1052万
展开全部
接口和类是继承关系

类继承于一个或多个接口
所谓的接口
你可以这样理解
就是类的一个蓝图
一个框架
一种规则
继承于他的类
都要符合他的要求和规范
实现接口中的方法
楼上朋友说的
接口和抽象类的区别
也是很重要的
你两者对比理解即可
在看看代码
自己试试就能明白个一二了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
公西孝犁甲
2020-01-25 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1087万
展开全部
接口
是负责功能的定义,项目

通过
接口
来规范

,操作

以及抽象

的概念!


是负责功能的具体实现!



也有抽象

的定义,抽象


接口
的区别在于:
抽象

是一个不完全的



里面

抽象的方法,属性,也可以

具体的方法和属性,需要进一步的专业化。

接口
是一个行为的规范,里面的所有东西都是抽象的!
一个

只可以继承一个基

也就是父

,但可以实现多个
接口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式