我认为java的接口也是为了实现多继承的不得已,当然没有c++中的理所当然来的顺利。
解决方案 »
- 请问学习jsp的步骤和方法是什么?
- List list = new ArrayList(); 是什么意思??
- 如何读取excel中的数据
- 急!高分请教高手,关于读取中文文件乱码问题!
- VC中的汉字怎么才能在JAVA中正常显示
- 帮个忙!谢谢~
- 求救,我按照CSDN上的文档配置好了TOMCAT连接池,为什么不行
- java 的简单问题 11 ???
- JBuild中怎么做安装程序?
- 如何让JTable的列不能移动交换?????????
- 如何让文本框只能输入一个数字后就将光标跳到下一个文本框里?
- Applet编译后运行出现Exception in thread "main" java.lang.NoSuchMethodError;main
跑();
跳();
}interface 恐怖{
吃人();
}class 狼 implement 活动,恐怖{
跑();
跳();
吃人();
}而对于猫,它不恐怖的。
class 猫 implement 活动{
跑();
跳();
}
经典
如果没有学过c++也就没有这个问题了 ^_^因为每一个class中都要占用存储空间来存放实现细节
如果实现多继承,在合并的时候好像编译器会有不少负担而interface与实现细节无关也许这是java只有多实现,没有多继承的一个考虑方面吧 ^_^
我最近也在考虑楼主所提出的问题
就是我希望能够合并多个实现细节
不知道在java中是如何来实现的 ^_^
但是这对我的问题没有帮助,我只是对“接口实现多重继承”这句话的意思有些疑惑。to danceflash(Wine)
其实这个学不学c++没有什么关系,多重继承的一个好处(至少我认为是个好处)就是
可以继承几个实现类,而不用考虑这几个类是谁写的,还有哪部分程序在用它,但是
接口并没有给java带来这个好处,因为当初设计这几个类的时候,不会想到会有谁去
继承它,所以可能并没有用接口来描述。还有对于合并多个实现细节,我想可以用内部类来模拟,但这绝对不是多重继承。
你误会我的意思了,你说得我明白,类和接口都可以继承。
我只是说对实现类的多重继承。搜以下以前的帖子,好多人都说接口带了的一个好处就是实现多重继承。
就连think in java里也这么说,我实在不明白既然不能从多个实现类里继承
这样的多重继承有什么好处。
我想那句话只是说明在java中使用接口来实现多重继承的问题,这里我觉得它所说得多重继承是在向上转型中用到的 ^_^如果使用内部类的话好像感觉上没有这个需求,我还是考虑使用组合吧 ^_^至于好处,我觉得确实对比着C++和java一起学习,可以了解两种语言的差别,并看到他们的不同的着眼点,每一门计算机语言都是在现有技术上寻求一个平衡点,而java寻求自己的平衡点时放弃了多继承别人跟我说有书曾说到过一些java语言为什么选择这样一些特性的原因,不过我还没有看到过,不知道哪位高手能推荐一些这方面的书 ^_^
java接口的好处我是在使用java一年以后才发现的。
看书真的看不明白的。
确实是,其实如果没有那句话的话,我也不会有这样的疑问,就是因为有了那样一句话,
我才会和c++进行类比的,其实接口有它自己的好处,没有必要和多重继承掺和在一块。to futurebus(老猫)
对于接口的好处,我虽然不能从工作中体现,但是我已经有感性的认识了,他写的例子,
我明白,但是和我的问题没有关系,我并没有问“为什么要用接口”或者“接口有什么好处”
我的疑问还是这个帖子的标题。
实际上,在绝大多数情况下你都不会真的需要继承多个类
如果一个对象既是A又是B又是C而ABC本身又是相互独立的
这本身就不符合一般的逻辑,说明你在建模和设计类结构时出了问题
多继承99%的用途是为了实现多接口,
我记得我的老师跟我说,永远不应该同时继承多个实体类
但同时继承一个实体类和多个接口或抽象类却是有必要的
JAVA与C++相比在这方面最大的缺点是不能多继承抽象类
因为我们常常不满足于只继承接口本身,
而是希望在接口中加入一些实现这个接口所需的公共的基础的支持
JAVA在这个方面的确有些缺陷,
但你确实可以用proxy、adapter、bridge之类的pattern
或者调整类结构(比如composite pattern)来解决这个问题
这句话,从字面上理解确实是容易误导人。但是知道,java没有多重继承之后,再看接口可以实现多重继承,就明白多了。。C++中所说的接口也不是java中那个interface一样啊。语言嘛,思想上差不多。。不过语言上要全部忘记其他的,可能是受C++的影响吧。
说的有一定道理,但是并不能说明问题,继承的好处我觉得一个就是代码重用,
打个比方一个类是实现踢足球,一个类是实现打篮球,这两个类都是已经实现了的,
分别用于会踢足球和会打篮球的人,我只是想拿过来用,
因为我要应用的这个人两个都会,所以我想都用,但是当初设计的时候没有考虑到会有人
要继承这些类,所以从开始设计的时候就没有考虑到先在接口定义,然后实现。
这样的话,我就没有办法用这些写好的代码,多重继承实体类,这算不算是一个好处?还有,你说“JAVA与C++相比在这方面最大的缺点是不能多继承抽象类”
如果java可以继承抽象类的话,也就没有这么多问题了,因为抽象类和接口的一个区别
就是抽象类里可以实现。
定义,然后再实现,这样还有什么意义?也许这三个类我都不知道是谁写的
我只是想拿过来用而已,总不能对这三个类再进行修改吧。再看接口可以实现多重继承 这没什么误导的 搂主说的这种情况 完全可以用聚合 免得继承乱用public class 活动{
跑();
跳();
}public 恐怖{
吃人();
}class 狼 {
恐怖 恐怖1 = new 恐怖();
活动 活动1 = new 活动();
跑();
跳();
吃人();
}语言吗 解决问题的方案不一样 都能解决问题
即便是引入了接口也没能实现c++中多重继承的功能。我记得ibm的开发网上有篇文章写着写程序第一条,尽量不要用继承,而是用合成,
我想就是因为java里没有多重继承的缘故,因为当初设计的时候谁也不能预想到
以后是否要继承这些类,所以不可能都用接口来定义。
只是模拟了多重继承的功能。好了,谢谢各位,只要弄清楚这些,我看就差不多了,毕竟我还是初学者,
现在在这方面钻牛角尖也没有什么意义了。
再次感谢,明天来了揭帖。
实际上,在绝大多数情况下你都不会真的需要继承多个类
如果一个对象既是A又是B又是C而ABC本身又是相互独立的
这本身就不符合一般的逻辑,说明你在建模和设计类结构时出了问题
多继承99%的用途是为了实现多接口,
我记得我的老师跟我说,永远不应该同时继承多个实体类
但同时继承一个实体类和多个接口或抽象类却是有必要的
----------------------------------------------------
同意以上我想说的是:
Interface, 多重继承, 对象组合都是编程的利器。Interface: JAVA的创造者想必功力深厚,专门用一个关键字来说明接口的重要性,不用可就..,同样只让Interface能多重继承,说明了Interface多重继承的好处,和多重继承的好处。对象组合大家都说好,是很好,它很灵活,可在运行期动态绑定。但是它要new,还得看看是不是NULL吧多重继承是在编译时绑定,它的好处说白了就是不用new,而且比对象组合调用少了一层间指,所以也很有用。ATL比MFC强得多,它使用了多重继承和模板来实现,威力无比啊.总而言之,多多用这些东西操练操练,有比没有强。