问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

接口的单继承多实现是什么意思?

发布网友 发布时间:2022-04-18 13:46

我来回答

1个回答

热心网友 时间:2022-04-18 15:16

抱歉,你只要提到“接口与继承”,“单继承多实现”这个概念你就绕不开。但什么是“继承”?其实“继承”一词,包含两层含义(大多数人把它们混着来说):
代码重用(功能扩展)
抽象多态
但“单继承”一词的“继承”,只包含上面第一层含义。事实上,大多数人一提起“继承”,大多数人立马会想起代码重用,但却对抽象多态知之甚少。你要明确,除了“单继承”以外,继承的目的可不仅仅限于代码重用上。有不少的材料会说“JAVA/C#不支持多继承,所以用接口来实现多继承”这句话是一种非常不负责任的说法,因为前后两个“继承”根本不是一个意思。但上面1和2在技术上都依赖一个基本特点:(这也是继承的技术本质)
父类/接口的引用可以指向子类的对象!

代码重用有什么好处,我就不详细叙述了,我下面只谈抽象多态有何用。
你学的是JAVA还是C#?如果是前者,继承用extends/implements,后者用“:”,我下面全部用冒号了。

比如说有某个实体类/工具类,里面有个函数要获取某个图形的面积
class Util{ public void F(Shape s) { …… double result=s.CalculateArea(); …… }}

现问题来了,shape类型有很多,不同了图形面积计算方法不一样,如正方形是s=a^2;椭圆面积是s=phai*a*b……那么不同形状图形各整一个类:
class Circle{ public doulbe CalculateArea();}class Square{ public doulbe CalculateArea();}

那么对应的Util类就为这些不同的形状添加F()方法重载?
class Util{ public void F(Circle s); public void F(Square s);}

那么如果有一百个形状呢?要重载一百个F()函数?一亿个呢?好吧,如果一亿个你都咬牙写了一遍。那么你写好,编译好了成为一个动态库,后面又再增加呢?如果你这个动态库要发布给别人使用,这就*着别人只能用这几个固定的类而不能随心所欲增加新的类。另外,你要重载一亿个F()函数还得都获得这一亿个类的原型声明。这原型一旦做了修改你又得重新编译,多麻烦?
所以多态就要来解决这个问题了:
有了多态,你只需声明一个接口:
interface IShape{ void CalculateArea();}class Util{ public void F(IShape s) { …… double result=s.CalculateArea();//我Util类管你实现的类是什么类?只要你是IShape的子类,我就能调用! …… }}

那么使用者只需要让新增加的形状继承于IShape就可以作为参数调用。
class Circle : IShape
class Square: IShape
而抽象类,则是同时兼顾代码重用和抽象多态的折衷产品。

另外,既然你提到过“单继承多实现”,我就不放再说一说,为什么要有“单继承”?
对比JAVA/C#的单继承,C++是多继承的,所以他不需要专门“接口”。多继承,意味着这种语言完全“面向代码重用”(当然他并不排斥抽象多态)。如何为完全“面向代码重用”呢?就是我写一个类,从A继承一票功能,又从B继承一票功能,又从C…
是大豆茬。必须是年未使用过氯
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 党文廉政建设论文 请大家帮帮忙,下午要 在写开题报告是,有完成本课题应具备的环境(软件、硬件),这怎么填啊?是什么意思啊?_百度问一问 建国初期实行新的士兵军衔制度对军队的影响是什么? 军衔流变有哪些? 现在军衔是怎么算的 肾结石可以吃芡实薏米红豆汤吗 几百块的麦克风选择什么品牌的好? 计算个人应交所得税 添柏岚pro靠什么防水? TIMBERLAND的鞋子正品那种防水的,在下雨天或者水溅到鞋面上,鞋子颜色会变深吗?就像进水一样 买了双timberland,不知道防水性能好不好,有没有人回答一下啊? 红糖小馒头做法 红糖小馒头的做法 黑芝麻酱馒头,自己怎么做手工馒头 红糖芝麻红枣馒头怎么做 洗衣机里面有异味,有办法解决吗? 银行基本户是什么?求解答 若永久删除扩容弹夹,“吃鸡”空头里面哪吧武器最受影响? 和平精英空投武器有多厉害?GROZA伤害怎么样? 农村卖散酒赚钱吗 开散酒坊赚钱吗?万客泉散酒加盟招商 ,黄酒 ,散白酒坊。 内蒙古散酒加盟赚钱吗? 为什么联想电脑下载软件需要联想转换器 - 信息提示 为什么女友白天不让我摸她那里,晚上摸哪儿她都让摸? 我摸到女友的那里了 没隔裤子 她但是哭了2.3分钟 女友 主动让我摸她 为什么不让我动她? 我摸女朋友,她是什么感觉啊,她会愿意吗 女友为什么不让我看她下身? 第一次摸了女朋友,进一步她拒绝了 跟我女朋友睡一起,亲她摸她都行,就是做那事时就不干了,这是为什么? 扣板吊顶的种类举例 分类介绍 装铝扣板吊顶好看吗?实用性如何呢? 塑扣板吊顶脱落,要怎么解决? pvc扣板吊顶价格多少 怎么选购? 只有1000元,可以买股票吗?如果可以哪个股票比较好?请前辈指点指点! 外服暴雪能用银联吗 暴雪客户端怎么又登国服又登外服 北京全方位餐饮有限公司朝阳饮食文化发展分公司怎么样?