社区
Java SE
帖子详情
妹妹有个关于接口与抽象类的问题,希望高手们帮忙~~~
glacier86400
2005-03-23 10:19:40
接口与抽象类到底有哪几点不同?
谢谢!!
...全文
141
9
打赏
收藏
妹妹有个关于接口与抽象类的问题,希望高手们帮忙~~~
接口与抽象类到底有哪几点不同? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaohuozhi
2005-03-23
打赏
举报
回复
接口定义的所有方法还没有实现.
抽象类是有某些方法还没有实现.
pier2008
2005-03-23
打赏
举报
回复
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
quiton
2005-03-23
打赏
举报
回复
在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。
在接口中不能定义默认行为还存在另一个比较严重的问题,那就是可能会造成维护上的麻烦。因为如果后来想修改类的界面(一般通过abstract class或者interface来表示)以适应新的情况(比如,添加新的方法或者给已用的方法中添加新的参数)时,就会非常的麻烦,可能要花费很多的时间(对于派生类很多的情况,尤为如此)。但是如果界面是通过abstract class来实现的,那么可能就只需要修改定义在abstract class中的默认行为就可以了。
楼主妹妹,问了很多问题,怎么从来不见你结贴啊?
the81919
2005-03-23
打赏
举报
回复
抽象类里有抽象方法也有方法实体.
接口只有抽象方法
007remember
2005-03-23
打赏
举报
回复
对
您太客气啦
glacier86400
2005-03-23
打赏
举报
回复
从网上找的:
-------------------------
抽象类和接口有何区别?
从书上摘下来的,还是比较好懂的:
1.抽象类是一个不完全的类,需要进一步专业化.接口只是一个行为的规范或规定;
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类
4.接口可以用于支持回调,而继承并不具备这个特点.
有些直接就是接口与类的区别.第四点我不是很明白......
一个类如果要实现某个接口,除非它实现了该接口中承诺的所有方法,否则(即未实现或者仅仅实现部分方法),该类必须被声明为抽象类.而该类的子类也继承了这一特性.
-------------------------------
他说的对吗?
还有要补充的吗?
谢谢!!
007remember
2005-03-23
打赏
举报
回复
含有abstract methods的类称为abstract class
abstract methods:是不完全的函数,只有声明而没有本体(摘自《java编程思想》)
interface:
interface更胜于abstract class,
建议您买本《java编程思想》
一步到位
zhoudut
2005-03-23
打赏
举报
回复
抽象类可以有实现
接口不可以有实现
我觉得接口就相当于c++里面的纯虚类
老無所依
2005-03-23
打赏
举报
回复
大致了解一些,
不过还不能真正体会二者差别,继续学习中。。。 帮顶!
其他
关于程序员的文章 2014年05月01日 16:58:25a8511119阅读数:300 中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际上只是一些Codingfans,压根没有资格称为程序员,但...
开发者 发展 9 心智模式
根据人类的学习与记忆过程来高效学习训练你的神经网络 获得知识的过程——学习——本质上是个体力活(尽管是有一定方法的体力活),这个体力活大致分为两步: 将外界(书本上的)知识转化为外显记忆。 通过不断练习,将外显记忆转化为内隐记忆。 李敖:换句话说,我这本书看完之后,被我大卸八块,五马分尸。可是被我勾住了,这些资料我不凭记忆来记它,我凭用细部的很耐心的功夫把它勾紧,放在资料夹子里。 ...
写一个块设备驱动
----------------------- Page 1----------------------- 第 1章 +---------------------------------------------------+ | 写一个块设备驱动 | +-----------------------------
写一个块linux设备驱动
----------------------- Page 1----------------------- 第 1章 +---------------------------------------------------+ | 写一个块设备驱动 | +-----------------------------
《疯狂的程序员》七
61 绝影再见到陈董,已经是深冬的时,这时候北京也到了刮风的季节,于是陈董再也不在绝影他们面前强调北京有多好了,因为每当这个时候,下面的人便说:“好大的风,一点也不好。”绝影当然知道不能在陈董面前说北京不好,但是他们不知道。 陈董拍拍绝影的肩,语重心长地说:“小绝啊,你从来没让我们失望过啊。这次就全靠你了。” 绝影对他这句话已经有点麻木,只是机械地说:“哪里,哪里,尽力而为吧。” 陈董忽然...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章