A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼王 高级黑马   /  2013-6-10 17:29  /  1519 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 狼王 于 2013-6-10 18:38 编辑

实现就是继承,只是因为在java中,不支持多继承,于是利用接口,改良成多实现?
不知道这样理解是否正确,亲们?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

8 个回复

倒序浏览
本帖最后由 小冰块 于 2013-6-10 17:46 编辑

如果说接口和抽象类比较相似还可以理解,但是接口和继承直接就差得远了吧。
对于抽象类的继承你说的的确有一定的道理,但是对于普遍继承而言就不是这么回事了。

继承机制中父类和子类是有着is a的逻辑关系的,父类的非私有属性和方法会悉数授予子类。子类可以重写父类方法以便完成自己的特有功能。

但是接口并不是这样,接口中的抽象方法只是一个通用的标准,就像你主机里的PCI插槽,插槽无论何时都会存在,但你不一定要实现它,更不必说全部都要实现,只要找你需要用到得实现就可以了。

下面说说抽象类和接口的关系:

一个类可以(继承)实现多个接口,但只能继承一个类。接口中只能定义方法名,方法参数和返回值,以及静态变量。而抽象类中可以有方法的实现,也可以定义非静态的类变量。所以,当你需要多继承特性时,那你只能使用接口;当你需要在父类中实现部分代码(通用功能)而根据不同情况某一方法有不同的实现时,那就设计为抽象类。

抽象类主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。

一个基本原则是,首先考虑使用接口。接口可以继承接口。抽象类可以实现(implements)接口,抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数。有个通用的设计思想,如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不是吧,继承父类,子类可以使用父类public 、protected 的属性和方法。java 只能继承一个父类,而C++可以多继承多个父类。但是java为了解决C++ 多继承所产生的问题,继承多个接口来处理。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 李晓峰 于 2013-6-10 18:07 编辑

java中多现在确实弥补了多实现的局限性,但是不能理解为:实现就是继承。

可以试着在概念上理解:
      继承:多个类具有形同的属性和行为时,可以将这些功能的属性和行为提取到一个单独的类中,让多个类去继承这个单独类,无需在定义这些功能的属性和行为。
      实现:当抽象类中的方法都是抽象方法的时候,这个类就是一个接口。
      抽象类:多个类有相同的方法声明,但是方法体不一样。这个时候,我们考虑把方法声明进行抽取。让子类继承后,自己去实现方法体。


继承就像学生跟人的关系,接口就像电脑跟鼠标之间的关系。继承是可以将父类的功能直接拿来用或者复写属于自己的特有内容,实现是程序的扩展功能。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
如果问题已经解决,那么请把帖子的类型改为已解决{:soso_e181:}
回复 使用道具 举报
袁梦希 发表于 2013-6-10 18:10
如果问题已经解决,那么请把帖子的类型改为已解决

袁梦希,谢谢你的提醒以及技术分
回复 使用道具 举报
狼王 高级黑马 2013-6-10 18:38:26
7#
李晓峰 发表于 2013-6-10 17:59
java中多现在确实弥补了多实现的局限性,但是不能理解为:实现就是继承。

可以试着在概念上理解:

谢谢解答
回复 使用道具 举报
狼王 高级黑马 2013-6-10 18:39:47
8#
小冰块 发表于 2013-6-10 17:45
如果说接口和抽象类比较相似还可以理解,但是接口和继承直接就差得远了吧。
对于抽象类的继承你说的的确有 ...

小冰块,谢谢你的解答
回复 使用道具 举报
狼王 高级黑马 2013-6-10 18:40:15
9#
Jomes 发表于 2013-6-10 17:53
不是吧,继承父类,子类可以使用父类public 、protected 的属性和方法。java 只能继承一个父类,而C++可 ...

Jomes,谢谢你的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马