LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 957|回复: 10

抽象类和接口

[复制链接]
发表于 2003-7-15 18:57:34 | 显示全部楼层 |阅读模式
在JAVA中反复的提到 抽象类和接口 的概念,
抽象类和接口 具体有什么差别??

哪位兄弟给详细讲解一下它们的区别, 或提供一下这方面的文章, 谢谢
发表于 2003-7-15 19:16:41 | 显示全部楼层
实现方法不一样
抽象类只能单一继承,接口可以多继承。
 楼主| 发表于 2003-7-15 19:36:47 | 显示全部楼层

好像是这样

能够详细点吗?? :p
发表于 2003-7-15 23:14:18 | 显示全部楼层
1. 因为接口不是类, 所以你的类可以实现一个或多个接口. 但java中只有单一继承, 所以一个类最多只有一个父类(superclass).比如说: A implements B, C 是合法的, 但 D extends E, F 是不合法的.
2. 如果你的类实现了一个接口, 那么接口中的所有method都必须在你的类中实现, 否则你的类必须声明为abstract. 但abstract类的子类不一定要实现所有父类规定的abstract方法, 而可以留给他自己的子类来实现, 当然, 前提是他自己也必须是abstract类.
3. 接口是特殊的类(hooooops, I eat my words), 接口也可以相互继承.
发表于 2003-7-16 02:44:08 | 显示全部楼层
好几天没有切合论坛题目的话题了,这个大家可以多说几句。
发表于 2003-7-16 20:20:24 | 显示全部楼层
实际上,抽象类也就是当成接口使用。
发表于 2003-7-16 20:27:19 | 显示全部楼层

不是吧

viper斑竹。难道我的帖子不切合论坛主题么?
我提的也是程序设计相关的问题呀,虽然有点菜。
 楼主| 发表于 2003-7-16 22:51:27 | 显示全部楼层
最初由 kj501 发表
实际上,抽象类也就是当成接口使用。


可是书上十分开来介绍的,(Java2参考大全(第四版))

抽象类 似乎明白一点了,接口

一点没看懂  惭愧 
发表于 2003-7-17 02:06:35 | 显示全部楼层
接口的所有成员都是公有的,数据成员都会自动成为static和final。
发表于 2003-7-17 09:29:04 | 显示全部楼层
今天重新看了一下<面向对象的分析与设计>(Andrew Haigh著,机工出版),抄一段书,以便于加深大家对此问题的理解:

抽象类

抽象类是一种设计结构,它允许设计者创建一个永远不会有实例对象的类。
使用抽象类有几个原因。原因之一是:通过在等级结构图中占据一个虽没有实例对象但仍需要描述的位置,它有助于建立一个逻辑的继承等级结构。
在继承等级图中有一个位置,其好处体现在使用集合时。如果有从shape中派生的triangle和circle对象,在设计中就不要使用一个Triangle对象的集合和另一个Circle对象的集合,取而代之的是在设计中包含一个Shape对象的集合,它含有Triangle对象和Circle对象。这样做是有好处的,如果目前的集合中再包括由类Square(另一个从Shape类派生的类)创建的对象时,就不需要另外修改源代码了。

应用程序编程接口

当方法被开始引入时,它们共同地描述为类的接口。对正常的继承来说,不仅类的接口被继承,实现接口的方法也被继承。这里,应用程序编程接口(API)被定义为一个只允许其接口被继承的类。一个API类通常用于将若干其他类的接口集在同一个类中。注意到API类只包括接口,而从不会直接创建对象是很重要的。API类因而就是一个抽象类。其中声明为“抽象”的方法被派生类继承为纯接口(interface_only))方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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