社区
Java
帖子详情
大家注意了,我的“ 【150分大讨论】为什么要使用接口? ”主要问的是多重继承,而不是接口?
zhaoqiubo
2004-10-21 08:48:36
http://community.csdn.net/Expert/TopicView1.asp?id=3474082 不要总回答接口怎么怎么好。我问的是为什么要用接口来实现多重继承?什么时候需要多重继承?用接口实现了多重继承会怎么样?不用多重继承又会怎么样??
...全文
358
17
打赏
收藏
大家注意了,我的“ 【150分大讨论】为什么要使用接口? ”主要问的是多重继承,而不是接口?
http://community.csdn.net/Expert/TopicView1.asp?id=3474082 不要总回答接口怎么怎么好。我问的是为什么要用接口来实现多重继承?什么时候需要多重继承?用接口实现了多重继承会怎么样?不用多重继承又会怎么样??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluesage
2004-11-08
打赏
举报
回复
如楼上所说,我也觉得多继承是为了代码复用。通过interface可以模拟多继承。
launch401
2004-11-08
打赏
举报
回复
我觉得楼主的问题不太清楚,以下几个问题应该搞清楚:
1. 为什么要用多重继承?
多重继承,是为了让一个类拥有多种身份,可以用在不同的场合,达到功能复用的目的。
2. 如何实现多重继承?
在C++中,语言本身支持;
在Java,用interface语法来实现,但interface语法本身并不提供具体实现,如何提供具体实现可以如jeffyan77所说用委派的方式(这样更灵活),也可以直接写实现方法。这就看你的需求了。
3. java中的interface是为了多重继承而设计的吗?
不完全是,个人认为interface语法主要是为封装和多态这些面向对象的基本要求而设计的,所以interface的更大的意义是在设计阶段而不是在实现阶段。面向对象设计的原则之一就是面向接口编程,当然这里所说的接口并不是java中的interface,但java中有interface这个语法一定是为了增强java对面向对象的支持而被加入的。
--------------------------
我问的是为什么要用接口来实现多重继承?
A: java中只有interface这一语法能够完成多重继承。
什么时候需要多重继承?
A: 如上所述。
用接口实现了多重继承会怎么样?
不用多重继承又会怎么样??
A: interface不完全是为了多重继承而设计的。
xtaotao
2004-11-06
打赏
举报
回复
OOD的一条基本原则: 依赖关系应该指向抽象类或接口,而不是指向具体类!
使用接口对于软件重用和扩展会带来很大好处!
而且避免了很多类的多继承带来的问题,如多个父类中同名成员、虚基类等复杂问题。
UglyUgly
2004-11-05
打赏
举报
回复
我问的是为什么要用接口来实现多重继承?
为了避免同样的接口中的方法会有多个实现
什么时候需要多重继承?
呵呵,需要用的时候就用。
用接口实现了多重继承会怎么样?
接口中的方法不会有重复的实现
不用多重继承又会怎么样??
没什么,条条大路通罗马同样的问题可以有多种实现。这也一样。
yub1981_cn
2004-11-05
打赏
举报
回复
并不是用接口来实现多重继承,而是使用接口可以实现多重继承的效果,而且可以避免一些问题。但其意义远不止这些。
bonniewater
2004-11-05
打赏
举报
回复
jeffyan77(jeffyan77)
说的看的不明白
jeffyan77
2004-11-04
打赏
举报
回复
接口无法实现真正意义上的多重继承,但是可以模拟多重继承。
譬如你有一个超类Super,一个接口IF,子类Sub继承了超类Super,实现了接口IF,这样Sub就同时具有了两个类型:Super和IF。但是IF本身并没有任何实现,所以Sub无法从Super那里得到实现。不过这没有关系,这一实现可以通过委派交给另一个实现了IF的对象Other。
class Super{
void m1(){ ...}
}
interface IF{
void m2();
}
class Other implements IF{
void m2(){...}
}
class Sub extends Super implements IF{
private Other other = new Other();
void m2(){ other.m2(); }
}
这样看上去Sub好像实现了Super和IF的双重继承。虽然IF的实现是由另一个IF的实现Other给出的,而Sub确实同时具有Super的实现和IF的实现(由Other给出)和类型。
因为Sub对IF的实现是通过委派实现的,因此这个做法比真正的多重继承要灵活。譬如另有一个Other2
class Other2 implements IF{
void m2(){...}
}
那么Sub可以动态地选择使用哪一个IF的实现:
class Sub extends Super implements IF{
private Other other = new Other();
private Other2 other2 = new Other2();
void m2(){
if(...){
other.m2();
}else{
other2.me2();
}
}
}
等《Java与模式》再版的时候,我会把这个例子改一改放进去,省得很多读者到处找不到经得起推敲的例子。
showerXP
2004-11-04
打赏
举报
回复
《java编程思想》里面说的很清楚。
用具体类实现多重继承要涉及到所有相关类的实现。编译器要做很多的工作,用来区分不同的类,同时又要将这些类合成一块,变一个怪物出来。内存处理也非常复杂,很容易出错。
接口不涉及到具体的实现代码,所以处理起来不用像“如临大敌”一样手忙脚乱的。
allenhe
2004-11-04
打赏
举报
回复
我问的是为什么要用接口来实现多重继承
接口并不是为实现c中的多重继承而设计的。
jFresH_MaN
2004-11-04
打赏
举报
回复
楼上的楼上的说的对,接口就是标准,java里的许多类的参数都是一个接口的对象,只有实现了相应的接口才能实现相应的功能!
而且接口里的方法都已经声明好了,实现借口必须实现方法,这就统一了这个接口的子类的方法!实现多个接口就继承了多个标准!
但接口里的方法毕竟有限,在子类中加入了其他方法也就在统一标准的前提下又扩展了功能!
这就是面向对象的思想,继承对象扩展对象
whohu
2004-11-04
打赏
举报
回复
一种接口代表了一种责任responsbility,就是一种角色。比如一个人他实现了学生接口,那么他就可以去上课,因为他有学生的功能的集合,比如听课,做作业。那么老师就可以发消息给这个学生,指令做作业,听课。而没有这个接口的人是不会做作业,听课的。如过这人实现领导接口的话,可能就有讲话,视察的功能。
launch401
2004-11-01
打赏
举报
回复
接口只是一种约定,就像一个通信协议,用于具体类之间的通信,oo的一个原则就是面向接口编程而不是面向实现编程,在设计阶段,我认为最重要的就是要设计接口,接口一旦确定了,程序的框架也就有了,剩下的就是往里面添东西。多重继承只是让一个对象拥有不同的接口,以符合不同的通信协议。
bonniewater
2004-10-29
打赏
举报
回复
个人认为
当一个类继承了一个父类,而父类缺少它想要的功能,而它又要加,这个时候多继承就有用了
多声明一些接口,最后用一个类实现
zhaoqiubo
2004-10-29
打赏
举报
回复
上面的,接口里面没有实现,如果单纯是为了实现你定义的再多有什么用呢??如果子类没有父类的功能。。这很正常啊。直接在子类里面实现不就得了。。这就是扩展啊!你没有说到点子上。。。
cocolovevienna
2004-10-24
打赏
举报
回复
可能用接口来实现多重继承更符合人的思维方式一些吧.如果名字取得不大好,用抽象类实现的话可能无法一下子看出来吧,而用接口至少能知道一些.
禽兽v5
2004-10-22
打赏
举报
回复
多重继承概念书里有。应用也很多。
为什么用接口实现多重继承,这是语言发展的分歧,各派观点不同。有的语言用类,如C++,有的语言喜欢接口,象java。至于这两种分歧的历史,你要看语言发展的历史资料(其实也就这几十年 -_-||)
zhangyunpeng
2004-10-21
打赏
举报
回复
建议你看看JAVA与模式的依赖倒转原则。写程序,要面对接口编程。这样灵活性比较好。
你这个问题感觉没法回答!
我的联系方式:zppio@126.com
Java为什么不支持
多重继承
:深入解析与实战应用
多重继承
是指一个类可以从多个父类继承属性和方法。例如,在C++中,一个类可以同时继承自两个或多个父类。return 0;代码解释:类C同时继承自类A和类B。:调用从类A继承的方法。:调用从类B继承的方法。:调用类C自己...
接口
与
多重继承
其实要
讨论
这个
问
题,首先您对于C++中
多重继承
要先有认识,新手看了书说
接口
可以达到
多重继承
,切莫人云亦云,尤其是没有学过C++的新手们,如果您对于C++
多重继承
想要有所认识,请先看看
多重继承
(一)与
多重继承
...
java中
接口
是否可以继承多个
接口
?
接口
是常量值和方法定义的集合。
接口
是一种特殊的抽象类。...不允许类
多重继承
的
主要
原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢? 但
接口
不存在这样的
问
题,
接口
全
【Java 基础篇】Java
接口
:实现灵活的
多重继承
接口
可以用于定义一组类的规范和约束。通过在
接口
中定义方法,强制实现类实现这些方法,确保实现类具有一定的行为和结构。在上面的示例中,Drawable是
接口
,定义了一个抽象方法draw,要求实现类实现这个方法。Circle...
JAVA关于
接口
,
接口
的意义在于顶替
多重继承
?
为什么要用
接口
?什么时候该
使用
接口
?很庆幸他们不是
问
我Java如何连接SQL Server,或者是如何开发J2EE应用,这类
问
题有杀伤力,避之则吉。今年计算机学院本科有个毕业设计课题是做J2ME,选这个题目的学生在5月末都...
Java
51,396
社区成员
85,838
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章