网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月05日
漏签
0
天
c#吧
关注:
188,070
贴子:
821,569
看贴
图片
吧主推荐
视频
游戏
23
回复贴,共
1
页
<<返回c#吧
>0< 加载中...
【新手问题】接口和抽象类有什么区别,
只看楼主
收藏
回复
a1b2c3z8
c#码农
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
RT.
接口听说是一个名单.代表这个类中需要生命的方法.
但是实现方法还是要在类中定义.果然接口就是一个名单么.那么接口的作用不就是帮助自己记忆子类需要的方法么??
抽象类看起来也就像是另类的接口,又是类又是接口,只不过抽象类可以写字段.而接口不可以..
最后一个大问题..什么时候用抽象类.什么时候用接口呢..
ppoqxx
c#初学者
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
类,抽象类,接口,它们都有各自详细的定义。简要的说明一下就是类是最普通的最常用的,没啥解释在类里写方法,调用类里的方法,你可以直接用它;抽象类也是类,区别就是你不能直接用它,要新建一个类继承它,然后使用这个子类,总结就是抽象类你不能直接使用它,它不让你直接使用,它是父类需要继承以便使用;最后说的是接口,我个人理解在下才疏学浅,水平有限,我个人理解接口它也是类只不过在C#中类是不可以多继承的,你不可以继承了类A又继承类B,但是接口解决了这个问题你可以同时继承多个接口以便使用,其实接口也是类不过它也是需要继承后使用,在需要多继承的时候使用。
无锡麒林智科技
酷狗输入法正版音乐网站酷狗输入法,为您提供酷音乐播放器酷狗输入法 、提供听书、长音频、频道、听小说和MV播放服务。酷狗下载,就是歌多!小说相声也很多!场景音乐也很多...
2025-02-05 02:47
广告
立即查看
灰机_不想飞
c#探索者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
接口:更多时候表示我能可以干什么
抽象:更多时候表示我是什么
比如
有一个抽象:家电
有一个接口:洗衣服
有一个具体:搓衣板
有一个具体:洗衣机
洗衣机当然可以洗衣服,也可以洗衣服,那么洗衣机应该继承这两个对吧?
但是手动党搓衣板君表示不服啊。
可是搓衣板不是家电啊。
所以搓衣板只能继承洗衣服这个接口,表示它能做洗衣服这件事。
什么时候使用抽象,什么时候使用接口其实不好把握。
取决于你是否要把某些功能集合确认为一个抽象。
不能以 “播放音乐” 接口作为确认 “MP3播放器” 的凭据,我家洗衣机也能放呢哼。
但是我可以把 “存取音乐”,“播放音乐”,“听收音机”,“插耳机线” 合起来成为 “音乐播放器” 抽象类
然后 "MP3播放器" 继承自 “音乐播放器”。
灰机_不想飞
c#探索者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
用接口的话可扩展性更强
以前有个接口 :播放音乐 (19x0年)
以前有个接口 :看视频 (19x1年)
以前有个接口 :上网 (19x2年)
19x0年有人实现 播放音乐 生产出了 MP3
19x1年有人实现 播放音乐,看视频 生产出了 MP4
19x2年有人实现 播放音乐,看视频,上网 生产出了MP5
所以你可以看到其实当某些功能合在一起的时候,它就形成了略显具体的类:抽象
但是抽象类的可扩展性基本就不大了,人家在生成MP3的时候定死功能就是那么多了,你不能在 “音乐播放器” 这个抽象类上再加上接口了是吧?不伦不类的,别的厂家已经生产的MP3还要实现你新加的功能。
这个时候我又确实需要加上这个功能怎么办呢,我家的MP3就是这么厉害能放视频啊,那就让MP3这个具体类再去实现 看视频 这个接口不就好了,别家的没有实现这个接口只实现了 音乐播放器 抽象类所以他们弱爆了。
所以从外表来看,这就是一个能看视频的MP3好厉害我也要买一个。
嗯,所以接口跟抽象结合起来程序的可扩展性已经很强了。
wangzhiqing999
c#大师
15
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
接口只有方法定义,没有实现。 抽象类可以有一部分实现。
一个类可以实现多个接口,但是只能继承一个抽象类。(C++和某些语言支持一个类继承多个类的情况)
至于什么时候用接口,什么时候用抽象类,要看具体类的体系结构了。一般是先定义对外的接口。如果实现的部分,有很多个类都实现这个接口,并且这些类里面又有很多代码是重复的,那么增加一个抽象类来实现接口,把那些重复的代码移动到这个抽象类里面,然后那些类修改为继承抽象累。
灰机_不想飞
c#探索者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
接口是功能。
抽象类基本已经有一个产品的雏形了。
所以功能组成了产品。
不同的功能组成不同的产品。
虽然它们都没有实现,但是它们给了实现者约束,你是洗衣机你就必须会洗衣服,你是洗衣机你还会放音乐我不管,那是你自己实现的小功能。
我们的追求是求同存异
争取大家都差不多,用接口跟抽象类归类好,这就是同。
再留给你们实现的自由,接口跟抽象都不限制你怎么去实现它,这就是异。
接口能实现的,抽象类都能实现。
但是抽象类太笼统,它不能把功能单独分出来,它代表的是一个已经归类好该有什么的对象。
接口太琐碎,你得把功能都合起来弄成你想要的,但它基本是业务逻辑上的最小单元,所以组合很自由。
a1b2c3z8
c#码农
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
...终于明白我想要问什么了...
@灰机_不想飞
@W20091205
@wangzhiqing999
..虽然可以用接口实现多继承..但是接口当中并不能定义实现的方法,,因为接口只是一个包括子类 字段和方法的名单而已...
那么问题就来了..我想在多个父类里面写方法..但是子类却只能继承一个类,,那么怎么能不在子类当中重复的写实现方法 而用接口直接实现呢??
绵绵啊
c#大牛
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
接口不是名单,这会误导你对接口的理解
接口是一个类的规范,是某种事物(事物就是类)都要遵循的规范(接口里面方法和属性的定义)
无语镝人
c#牛人
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示