萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1044|回复: 8

请教:如何理解JAVA的Interface

[复制链接]
发表于 2007-4-5 00:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

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

可是在程序例子中经常看到这样的应用:把一个返回对象转化成interface,然后把这个interface对象当成具体的object来用,比如运行方法,调用attribute值什么的,与一般的class object无异。有没有高手解答一下,为什么要这样应用呢?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-5 07:12 | 显示全部楼层
这个过程就是重载。接口设计出来当然要用了,要不要他干什么?至于“对象转化成interface”,这个你可以理解成接口的对接,接口就如它的名字一样,目的就是提供规范以便无障碍的通信。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-5 10:30 | 显示全部楼层
因为Java、Delphi等语言不支持问题多多的多重继承,所以弄出了这么一个Interface来替代这种需要。
一个对象,不管他继承自什么类,都可以用它来作为任意接口的载体。

就好像我是中国人,但是可以说好几种语言。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-5 18:09 | 显示全部楼层
interface  中定义的方法, 必须在实现了他的类里面全部实现而且不能改变它的方法名和参数名,
所以是覆盖, 不是重载。

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

interface  是 java 比 c++ 好的一个重要体现, 它分离了类本身和类型, 在c++ 中这两种是混合的。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-5 18:32 | 显示全部楼层
至于 lz 说的 情况, 是为了 达到松耦合的效果, 如果你直接用一个具体类来操作的话,
一旦你要修改或是增加功能的话是很麻烦的, 你不要说 几个类不麻烦, 要是让你面对几千个类, 你还敢说不麻烦吗,
再说, 有的时候不是麻烦不麻烦的问题, 很多情况下是你不能修改这些类, 因为你不知道还有那些类还用着这些类.

所以用接口,如果以后要修改实现的方法或者增加新功能的时候, 你直接再写一个实现了这个接口的类, 你就可以直接让他个得到这个类里的新功能,从而达到不改变原来的系统而增加了新的功能的效果。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-6 13:48 | 显示全部楼层
代表一种抽象概念,描述所有属于这种概念的对象(Object)的共有方法(Method),属性(Field)等,但不包含具体的实现。

[ 本帖最后由 带猫散步 于 2007-4-6 14:51 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2007-4-7 12:10 | 显示全部楼层
多谢楼上各位高手的回复,参考大家的意见,又在网上找了些资料,发现接口的用途的很多。

回头总结一下
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-4-10 16:02 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2007-4-13 00:55 | 显示全部楼层
试着总结一下,interface主要有三个作用:

1. 用来概括一组相近class的共同方法抽象,应用于代码规范层面
2. 直接使用接口调用object的方法,而不用去管object属于什么类,只要类实现了这个接口,像偶说的应该就属于这种用法
3. 实现多重继承,但是只是抽象继承,因为interface里没有代码具体实现
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-15 02:36 , Processed in 0.069366 second(s), 20 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表