日期:2014-05-20  浏览次数:20846 次

接口是怎样现实多继承的?
说上说java不允许多继承,但可以同过接口实现多继承
但我看到的例子都是些讲接口的使用方法的
哪位朋友帮忙找个接口实现多继承的例子看看
最好能帮我讲讲原理,谢谢了
分不多 不好意思

------解决方案--------------------
然后要说的就是C++支持多继承, Java不支持多继承.
此外要强烈抗议的就是大量的教科书在"Java不支持多继承, 但是支持多接口...", 这类的言词给许多Java的学习者造成了很大的误解, 多接口和多继承只是在语法形式上相似, 但是不具有更多的可比性.
Java的接口概念, C++用纯抽象类来表示.
class IEvent
{
public:
virtual void function() = 0;
};
这个和Java的
interface IEvent
{
void function();
}
是一致的.
 
但是实现多接口和多继承有着很大的差别, 特别是对于设计来说.
接口表示一种约束关系, 而公有继承表示is-a的关系, 或者保护继承表示implements-with的关系, 而接口表达的语义叫做can-do.
那么, 真正来完成多继承这个任务的, 往往是聚合, 当然了, 这个时候接口也可以帮忙, 不去强调约束的关系, 但是主要的功能继承源自于聚合, 而不是实现接口.
我之前写过一篇叫做"implements-with"的文章, 更多的从设计的角度讲述了多继承的意义.
------解决方案--------------------
接口:人、男人、小孩、

要建立个小男还的类A

A就要实现上面三个接口就可以

在C++等中就要多继承了!
------解决方案--------------------
算了吧, 我再免费布道... ...

先说OO, OO是人类认识世界, 应用于编程总结出来的方法.
三楼的设计不能说问题大,还是小,只在于是不是在系统中适用.如果能跑,而且将来的扩展没有问题,那就是好的,不一定要和现实世界表示很大的相似度.
(当然了, 我觉得那个设计糟透了...)

你们一定要记住 接口表约束的意思.
它的意思是并非给某种类型以某种能力, 或者某种属性, 而是约束某种类型有了某种能力或者属性.

考虑这个例子,
Java code

class Bird implements IFly
{
}