导航
全部
C#综合技术
C#互联网桌面应用
AppLauncher
WinForm&WPF
C#开发新技术
博文收录
Ada助手
问答
...
C#综合技术
C#互联网桌面应用
AppLauncher
WinForm&WPF
C#开发新技术
博文收录
Ada助手
问答
登录/注册
社区
C#
帖子详情
为什么C#舍弃了C++中的多继承而支持单一继承与多接口继承呢?
gigichq
2008-03-27 07:13:52
加精
个人学习C#的疑惑,想不明白,是出于什么设计目的而改变这种继承方式的呢?
...全文
给本帖投票
7020
151
打赏
收藏
为什么C#舍弃了C++中的多继承而支持单一继承与多接口继承呢?
个人学习C#的疑惑,想不明白,是出于什么设计目的而改变这种继承方式的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
151 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
Anod
2012-10-29
打赏
举报
回复
[Quote=引用 46 楼 的回复:]
引用 36 楼 vrhero 的回复:
....
你的例子理解错误...11楼是对的...现实世界是单一继承...多继承的特例也有...例如骡、狮虎兽...那是人类违背自然规律人为制造的...可以称之为怪物...
二义性已经够混乱了...但更糟糕的却是菱形继承结构...就是20楼hdt的例子...
接口不是唯一方案但到目前为止是解决此问题的最好方案...
一个人就是人...除……
[/Quote]
哈哈 不管说的对不对 反正是说的太精彩了 哈哈 顶你个肺疼!!
落曦
2012-10-12
打赏
举报
回复
高手无限多呀
幸福不能没有你2011
2012-07-31
打赏
举报
回复
用不用只是一念之差
xyxy0202
2012-07-03
打赏
举报
回复
路过留印
个人认为:
多继承更符合实际
单继承更适合现在的编译机制
来个大神开发出个可以多继承,但又不会乱套的新语言吧,阿门!
yojinlin
2012-06-29
打赏
举报
回复
學習了。
larissa523
2012-06-29
打赏
举报
回复
学习了。
yuji821
2012-06-28
打赏
举报
回复
二义性
可以通过接口实现多继承
aiqinggongyu1
2011-11-09
打赏
举报
回复
还是没看懂
glglgl2015
2011-09-19
打赏
举报
回复
c# 不得不实现单一继承,它想实现类的多继承也是不可能的,其中的原因是:IL不支持多类的多重继承。
flyforfei
2011-08-20
打赏
举报
回复
没有就是没有 好像这不会给业务造成麻烦吗 有什么业务非要使用多继承才能实现呢
bearfly2011
2011-07-22
打赏
举报
回复
如果你需要多继承类了,那只能说明你的业务的理解和抽象不够.
bearfly2011
2011-07-22
打赏
举报
回复
所以,我觉得C#中类的单继承和接口的多继承是符合现实世界规则的
bearfly2011
2011-07-22
打赏
举报
回复
[Quote=引用 53 楼 vrhero 的回复:]
to sjjf:
OO是为了化繁为简而不是反其道行之...
现实世界有多复杂不用你说...然而我们谈OO也只是对现实的简单抽象...目前的技术不可能去谈对现实世界完全的抽象...你一定要钻牛角尖别人也没办法...
你引用那么多书上的东西并不能表示什么...尽信书不如无书...另外书也是人写出来的...
我不知道儿子和父亲有何本质的区别,请告诉我本质性的区别。
---……
[/Quote]
父亲跟儿子的区别是,父亲个自己的老婆oo时是和谐的,儿子和自己的老婆xx是也是和谐的,但是缓过来OX或XO都是不和谐的.
------
以上是玩笑话.
其实我觉得,首先要搞清楚一个问题:C#不支持的是类的多继承,而非接口.这点很关键.既然上面好多都拿显示世界来举例,那我也做个类比:
1)首先用现实世界重新定义一下接口/类和对象
接口:所有物质特性和能力的任意组合
类:某一个具体的物种
对象:某一个物种的具体存在
2)如果您认可达尔文的进化论,那么从广义上来讲,现实世界就是单类继承的
前面围了反驳这个观点,聚了驴子、马还有老虎和狮子乱伦的例子。这个也不能说错,但是“从广义上来讲”这就是对类的抽象层次的认识了。你单纯的扣驴子属于什么物种,马属于什么物种,但是你向上一个层次呢?驴子和马属于哺乳类动物吧,在这一点他们算是同一物种吧。可能还会说那花花草草和驴子有什么关系呢?至少他们都是生物,这个没有问题吧。
3)显示世界的表象是复杂的,但是本质是简单的
这个没有人给出证明,但是很多领域都有类似的答案
计算机的本质是:0和1
宇宙的本质是:存在(抽象吧)
还有目前很紧张的南海局势,看起来复杂的像一团乱麻,光美国就挺闹心了,又搀和进来了日本和澳大利亚.最根本的原因是什么?是利益,为什么日本和澳大利亚也插一脚?因为这里是他们海上的生命线,归根结底还是利益.
moqijunnu
2011-07-13
打赏
举报
回复
牛人真多,潜水 学习 吸收
S_enjoin
2011-05-11
打赏
举报
回复
学习。。
sirzxj
2011-05-11
打赏
举报
回复
[Quote=引用 11 楼 apollo_ts 的回复:]
单一继承更符合真实的世界。面向对象本身起源于实际生活。
[/Quote]
顶
华韩哥哥
2011-05-09
打赏
举报
回复
[Quote=引用 45 楼 dshirenj 的回复:]
逻辑清晰
class 汽车
class jeep :汽车
class 夏历 :汽车
jeep 是 汽车
夏历 是 汽车
三蹦子 不是 汽车
[/Quote]
现实生活中,你可以拥有儿子...父亲、教师、老公、情人多个角色。但是你对于某个对象而言应该不能同时拥有多个角色吧?比如:对于你的老师而言,你就是学生。如果你又是情人,这就是乱伦。
woaiwoquan
2011-05-05
打赏
举报
回复
這個問題很好理解...你娶兩個老婆或者你有兩個媽媽有什麽後果呢?如果是你有一個老婆 和一個真人倒模的器具 還衝突嗎?!
wt_sanlian
2011-04-03
打赏
举报
回复
幸亏多继承被遗弃了,我从来就没搞明白过...
superzmy凄临雨
2011-03-31
打赏
举报
回复
多继承给程序员带来方便,给编译器带来不幸!
取消多继承,使得编译器可以更简单实现,却把一些东西推给程序员
多继承有利于代码重用。二义性根本不是问题。java真是懒
C#更把这个陋习给学了来
加载更多回复(131)
C#
与JAVA的比较
C#
与JAVA的相同之处:由于
C#
与JAVA都是基于
C++
发展起来的
C#
教程
发布一个
C#
教程 适合初学者,高手莫下
VB、
C++
和
C#
——
继承
最近在学
C#
时候,学到面向对象那块的时候,提到了
继承
,并且提到了
C#
中
类的
多
继承
,但是可以通过
接口
实现
多
继承
,不禁想到了
C++
和VB
中
的关于
继承
的一些东西。 Ø 何为
继承
?
继承
是指一个对象直接使用另一对象的属性和方法。
继承
可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类
继承
父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性
C++
builder,visual
C++
,
C#
,C区别
C++
Builder
C++
Builder是由Borland公司 继Delphi之后又推出的一款高性能可视化集成开发工具。
C++
Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;
C++
Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面...
比较
C#
和Java
本文对比
C#
与Java编程语言。 因为这两种语言都具有自动垃圾回收以及运行时编译执行的特点,并且他们的语法都是
继承
自C语言/
C++
,因此二者有很多相似之处。 但由于
C#
也被描述为一个
C++
和Java的混合体,并添加了一些新特性,引入了一些变化,因此
C#
和Java自然也有很多不一样的地方。 这个条目描述了二者总体上的相似性,并列举了二者的不同点。 目录 1语言 1.1对象处理 ...
C#
111,082
社区成员
642,569
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部