我想可能不止我一个人有这个疑问,所以把它贴出来。
下面是madai和clkrst给我的回答
java 的接口到底起java干什么用的作用?
1、从书中看到的是java程序的接口中只定义了瑺量及空方法空的方法有java干什么用的用呢?还要在类中写方法体那还要接口干java干什么用的?
2、一个程序中写了2个接口并在同一個类中写方法体,这与多继承有java干什么用的关系
3、包中那些已定义的接口,怎么知道那里面定义了java干什么用的方法
说到底,接口有java干什么用的实际意义哪本书都不讲,一味的讲是多继承不结合实际实在不好懂。
Madai的理解是:
java接口的用处主要体现在下媔几个方面:
(1)通过接口可以实现不相关类的相同行为而不需要了解对象所对应的类。
(2)通过接口可以指明多个类需要实現的方法
(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类
Clkrst给出了更详细的解释:
类描述了一个实体,包括实体的状态也包括实体可能发出的动作。
接口定义了一个实体可能发出的动作但是只是定义了这些动作的原型,没有实现也没有任何状态信息。
所以接口有点象一个规范、一个协议是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具體实体是一个具体的概念。
从程序角度简单理解,接口就是函数声明类就是函数实现。需要注意的是同一个声明可能有很多种實现
1、接口中定义类方法的原型,但是不能说是空方法因为空方法的意思是有实现体,只不过实现体是空操作实际上接口没有萣义任何实现体。具体的实现体都是在实现接口的类中接口只是定义了这些方法的调用方式。
你当然也可以不用接口直接在类里媔写方法,但是如果你的一组方法需要在很多类里实现那么把它们抽象出来,做成一个接口规范不是更好么?
2、一个类描述了一個实体这个实体可能是一个复杂的对象,它的动作很多如果把这些动作分类,用接口a定义其中的某一组动作接口b定义其中的另外一組动作,这样的结构比较清楚。
这种方式具备了多继承的优点避免了多继承的缺陷。实际上在历史上接口在很大程度上,是为叻解决多继承带来的种种问题而设计出来的
3、包中那些已定义的接口,怎么知道那里面定义了java干什么用的方法
接口里定义了方法的输入输出,这些都是协议具体的实现都在每个类中。对于很多只需要抽象接口的地方不需要知道具体的类是java干什么用的,只要這个类实现了这个接口就可以了