社区
Java SE
帖子详情
接口和抽象类的区别还是不明白,谁能举例说明一下
sssxing
2009-03-17 09:09:54
看了很多关于接口和抽象类的帖子,可是还是很模糊,谁能举例说明一下,谢谢!
...全文
15723
32
打赏
收藏
接口和抽象类的区别还是不明白,谁能举例说明一下
看了很多关于接口和抽象类的帖子,可是还是很模糊,谁能举例说明一下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ldw22008
2010-10-12
打赏
举报
回复
[Quote=引用 24 楼 jim123123123 的回复:]
我一直以为我懂了,看了你们说的我才知道我没懂。
[/Quote]
同感
b11ght
2009-09-14
打赏
举报
回复
学习了。。。。。。。。
wclszh
2009-03-18
打赏
举报
回复
个人喜欢接口的比喻方式
chxy148
2009-03-18
打赏
举报
回复
接口是一种特殊的抽象类~~~
sssxing
2009-03-18
打赏
举报
回复
谢谢各位前辈的回答,比书上讲得明白,我再研究研究
bingxue2332
2009-03-17
打赏
举报
回复
接口是对具有的动作能力预定义
抽象类是对具有的动作的抽象
FFDFDD
2009-03-17
打赏
举报
回复
受益匪浅
树成
2009-03-17
打赏
举报
回复
接口和抽象类的区别大了。
首先从属性上来说:
1、首先是继承关系,接口是多继承的关系,接口与接口之间是多继承的,类与接口之间是多实现的关系,而抽象类是一个类,由类对他进行单继承,不能多继承,接口不能继承抽象类,但是抽象类可以实现多接口;接口不能继承类或抽象类,但是抽象类可以继承抽象类和普通类。
2、方法以及属性定义方面,抽象类可以定义任何属性的方法以及实现方法,如private、protected、native等等(当然抽象方法有所限制),但是接口定义的方法不能够有实现,且属性必须为public的实例方法,不能有native等定义等等,接口定义的属性必须是public static final的静态常量。
然后从软件开发阶段来讨论:
接口是属于设计后阶段的定义的,用来协同各个模块以及各个功能之间通信与调用定义的。而抽象类是属于开发前阶段定义的,用来实现功能模块的一些基础的或者公有的或者默认的代码,以及规定一些变动功能与实现所需要依赖的规范。
J600600
2009-03-17
打赏
举报
回复
xuexile
guoapeng
2009-03-17
打赏
举报
回复
首先抽象类是一个类,只是它还有些方法没有实现,在它这个抽象层次还不能实现,
例如动物是一个抽象类,他的 移动 方法还没有确定,因为有的动物是四条腿移动,有两条腿移动,
有的飞,有的爬,但是他们都能移动,这样你可以把动物定义为抽象类,将动物的移动方法定义为
抽象方法,强制继承它的子类去实现。而且你在动物这个类中移动 虽然没有实现,但是可以调用他。
总的来说面向对象只能意会不能言传,说起来很费力。
接口: 你就想一下你的电脑上的usb 接口, 接什么设备都可以是不是, 而且你的电脑不知道他
是什么设备, 这就是接口的好处,只要它遵循USB2.0 标准就能接到USB接口上使用。
多比较一下这个接口,和java的接口 你就清楚了。
axman
2009-03-17
打赏
举报
回复
本质的区别是多继承和单继承的问题。
现在我们来定义一个歌唱家和作曲家。
如果用抽象类
abstract class Singer{
public abstract void sing();
}
abstract class Composer{
public abstract void melodize();
}
OK,现在有一个人既是歌唱家同也是作曲家,你实现给我看看。
用接口就非常容易。
interface Singer{
public void sing();
}
interface Composer{
public void melodize();
}
class APerson implements Singer,Composer{
public void sing(){}
public void melodize(){}
}
「已注销」
2009-03-17
打赏
举报
回复
大家解释的不错 学习学习ing
kkfvjmtd
2009-03-17
打赏
举报
回复
这个很简单的吧,看看书吧
fjilyfe
2009-03-17
打赏
举报
回复
主要的区别就是继承是单集成,接口可以实现多个。
当你有很多类要实现某种功能的时候,我们即可以用抽象类也可以用接口,但是一但你用了抽象类,那么以后这个类就不能再继承其他的类了,这样做有些不太好吧。所以通常实现方法我们一般都用接口。
KAKUKYOWU
2009-03-17
打赏
举报
回复
首先得搞懂什么是抽象类:
一.概念:
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。
并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念。
它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。
正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
二.语法:
抽象类中可以有抽象方法,也可以有普通方法,抽象方法只可以被声明,不能被实例化(就是不能有方法体),
必须由继承该抽象类的普通类来实例化。
其次,接口就是一个特殊的抽象类。
差别在于接口中的方法必须都是抽象方法,不可以有普通方法而已。
再举个比较形象的例子:
普通类------我们这些普通人;
抽象类------芙蓉姐姐(人人都有打破思想保守旧传统的能力,但是只有人家芙蓉姐姐有胆量);
接口------蜘蛛侠、超人(实现了接口就相当于你有了某种特殊功能)。
oklinsong
2009-03-17
打赏
举报
回复
[Quote=引用 2 楼 wclszh 的回复:]
抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明。
[/Quote]
正解,补充一点,因为java不支持多重继承,所以继承抽象类只能继承一个,但是可以实现多个接口。使用哪个看具体需求。
yangming164
2009-03-17
打赏
举报
回复
楼上的说得好了。只会用还没注意过这多
zouzou1981
2009-03-17
打赏
举报
回复
呵呵,感觉当老师教完java,再来做开发,基本功好得多
wanghuichp
2009-03-17
打赏
举报
回复
学习了
luojihaidao
2009-03-17
打赏
举报
回复
[Quote=引用 1 楼 xyz20003 的回复:]
接口是设计的结果
抽象类是重构的结果
[/Quote]
概括的非常精简。
接口的方法全部是public 抽象的。
抽象类的方法可以有非抽象。
加载更多回复(12)
JAVA
接口
和
抽象类
的
区别
?为什么有了
接口
还要
抽象类
?为什么
接口
越来越像
抽象类
?
对于初学者来说往往分不清什么是
接口
什么又是
抽象类
,这两个到底是做什么的有什么
区别
?对于一些有开发经验的来说除了语法之外也很难说清它们的具体的
区别
,只知道
接口
中只能声明方法,
抽象类
可以定义抽象方法由子类...
我们为什么使用
接口
而不使用
抽象类
总所周知
抽象类
和
接口
是Java里面比较重要的俩个对象,在我们的工作学习中都起着很多决定性的作用,在学习Java的时候我们的老师或者课本或者一些权威或许会告诉我们
抽象类
是什么什么,
接口
是什么什么,但是你有没有想...
抽象类
和
接口
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是
抽象类
看个例子说明:在打印图形例子中, ...
C#
抽象类
与
接口
的
区别
前两天在做类图的时候好像突然想
明白
了,所以记录
一下
我对
抽象类
与
接口
的理解,供其他同学参考学习. 定义 关于它们的定义网上有太多太多了,这里不再赘述 简单总结
抽象类
: 定义一个物体 它是什么
接口
: 定义一个物体 ...
深入理解
接口
与
抽象类
接口
与
抽象类
接口
和内部类为我们提供了一种将
接口
与实现分离的更加结构化的方法。 在Java的继承、封装、多态抽象四大特征中,抽象作为面向对象编程的一大特征,是非常重要的组成部分。而
抽象类
又是抽象的典型代表,...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章