corba 发表于 2007-4-5 00:24

请教:如何理解JAVA的Interface

说一个困扰偶很久的问题,就是java 的 interface。 照偶的理解,interface主要是用来定义类的抽象方法名称,以及方法的导入和返回类型什么的。

可是在程序例子中经常看到这样的应用:把一个返回对象转化成interface,然后把这个interface对象当成具体的object来用,比如运行方法,调用attribute值什么的,与一般的class object无异。有没有高手解答一下,为什么要这样应用呢?

cn1h 发表于 2007-4-5 07:12

这个过程就是重载。接口设计出来当然要用了,要不要他干什么?至于“对象转化成interface”,这个你可以理解成接口的对接,接口就如它的名字一样,目的就是提供规范以便无障碍的通信。

数字蛋糕 发表于 2007-4-5 10:30

因为Java、Delphi等语言不支持问题多多的多重继承,所以弄出了这么一个Interface来替代这种需要。
一个对象,不管他继承自什么类,都可以用它来作为任意接口的载体。

就好像我是中国人,但是可以说好几种语言。

w3gogo 发表于 2007-4-5 18:09

interface中定义的方法, 必须在实现了他的类里面全部实现而且不能改变它的方法名和参数名,
所以是覆盖, 不是重载。

如果只是继承 inderface, 就不能实现它里面的方法。

interface是 java 比 c++ 好的一个重要体现, 它分离了类本身和类型, 在c++ 中这两种是混合的。

w3gogo 发表于 2007-4-5 18:32

至于 lz 说的 情况, 是为了 达到松耦合的效果, 如果你直接用一个具体类来操作的话,
一旦你要修改或是增加功能的话是很麻烦的, 你不要说 几个类不麻烦, 要是让你面对几千个类, 你还敢说不麻烦吗,
再说, 有的时候不是麻烦不麻烦的问题, 很多情况下是你不能修改这些类, 因为你不知道还有那些类还用着这些类.

所以用接口,如果以后要修改实现的方法或者增加新功能的时候, 你直接再写一个实现了这个接口的类, 你就可以直接让他个得到这个类里的新功能,从而达到不改变原来的系统而增加了新的功能的效果。

带猫散步 发表于 2007-4-6 13:48

代表一种抽象概念,描述所有属于这种概念的对象(Object)的共有方法(Method),属性(Field)等,但不包含具体的实现。

[ 本帖最后由 带猫散步 于 2007-4-6 14:51 编辑 ]

corba 发表于 2007-4-7 12:10

多谢楼上各位高手的回复,参考大家的意见,又在网上找了些资料,发现接口的用途的很多。

回头总结一下

no1rock 发表于 2007-4-10 16:02

而且在IoC中被用到了极至

corba 发表于 2007-4-13 00:55

试着总结一下,interface主要有三个作用:

1. 用来概括一组相近class的共同方法抽象,应用于代码规范层面
2. 直接使用接口调用object的方法,而不用去管object属于什么类,只要类实现了这个接口,像偶说的应该就属于这种用法
3. 实现多重继承,但是只是抽象继承,因为interface里没有代码具体实现
页: [1]
查看完整版本: 请教:如何理解JAVA的Interface