`
xtcpcgx
  • 浏览: 13368 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

抽象类和接口的区别

    博客分类:
  • Java
阅读更多
昨天研究了一下抽象类和接口。发现他们两个意义上很相近,但是区别又很大
我们都知道接口里只有方法名,没有方法体。抽象类也是,但是跟接口最大的不同之处在于当程序有必要的时候可以往抽象类里面写方法体,以提供方便(虽然不推荐这么做)。
而且因为Java的单继承性使得,一个类不能从另一个类继承太多的方法。因此这种情况应该使用接口,用接口来定义很多方法,方便类实现这些方法。
当一个类实现了一个接口,那就说明它把接口里的方法都实现了-也就是说类里有接口里的所有的方法,因此占用了很大的资源空间,不管它有没有使用这些方法。
但是当一个类继承抽象类的时候,加入这个类没有调用父类的方法或没有重写这些方法,那这个类就不会实现这些方法,也就是说省了很大的空间。
基于这个特性,出来了一个非常常用的模式-缺省适配器模式。
这些是我的一些了解,希望我了解的错的话多多给我指正。
分享到:
评论
19 楼 yyc112 2010-10-21  
juforg 写道
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?

太打击人的积极性了吧

打击么?  不打击吧. 汉字拼错那么多.  别的更不用说了
18 楼 yqfly2008 2010-10-17  
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?


难道要一头扎进书堆里?弄个论坛出来就是用来交流的,年轻人
17 楼 Mrpublic 2010-09-02  
ironsabre 写道
抽像类的典型应用是模板模式,可由一个实体方法来管理一些abstract方法的流程。(继承)
接口的典型应用是策略模式,关注的可替换性。(组合)

我觉得你可以再说细一点 帮理解。。呵呵
16 楼 Mrpublic 2010-09-02  
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?


???
咱们新手就是需要交流交流 ,光看书有个屁用。。。
15 楼 dyllove98 2010-09-01  
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?

...
14 楼 udvs 2010-09-01  
ironsabre 写道
抽像类的典型应用是模板模式,可由一个实体方法来管理一些abstract方法的流程。(继承)
接口的典型应用是策略模式,关注的可替换性。(组合)

理解一样!
13 楼 youngliang 2010-09-01  
接口不一定会消耗什么资源,如果你发现,你实现了一个借口,但是实现之后,这个类是消耗资源的,我觉得,那就需要反思一下,你的接口设计了,
我个人是这个理解的
12 楼 cpdw 2010-08-30  
我总结的是:抽象类是爹,接口是老师
11 楼 huahuashijie888 2010-08-28  
sarstime 写道
huahuashijie888 写道
接口是is a XX,抽象类是like a XX的关系,很好记~~

你确定?

如果很好记,记错了更麻烦。

我日,果然记反了。。谢谢兄台提醒。。
10 楼 cantellow 2010-08-28  
<div class="quote_title">XTU_xiaoxin 写道</div>
<div class="quote_div">你回去能专心看看书,行不?<br>跑到这上面来学别人发什么贴?害人?<br>年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?</div>
<p>貌似你就很懂抽象类和接口的区别了?</p>
<p>那你可以给我讲讲为什么java限制单一抽象类继承,而C++可以多继承呢?</p>
<p>某些很高深的东西实际上等你研究了很简单,很简单的东西实际上深究你会发现你只是井底之蛙。</p>
<p>我也是年轻人,我只是觉得不要轻易否定别人的观点。</p>
9 楼 juforg 2010-08-28  
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?

太打击人的积极性了吧
8 楼 XTU_xiaoxin 2010-08-28  
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?
7 楼 sarstime 2010-08-28  
huahuashijie888 写道
接口是is a XX,抽象类是like a XX的关系,很好记~~

你确定?

如果很好记,记错了更麻烦。
6 楼 mallon 2010-08-28  
抽象类中可以放一些静态的东西
5 楼 tenderuser 2010-08-27  
引用
但是当一个类继承抽象类的时候,假如这个类没有调用父类的方法或没有重写这些方法,那这个类就不会实现这些方法,也就是说省了很大的空间。

这个不太理解  , 期望楼主解释解释  为什么会节省空间?  难道从抽象类继承后,如果不重写这个方法的话 , 子类对象就不会有这个资源么? 奇怪。。。。

4 楼 huahuashijie888 2010-08-27  
接口是is a XX,抽象类是like a XX的关系,很好记~~
3 楼 清晨阳光 2010-08-27  
一个接口,以抽象类实现之(一些空实现和一些必要实现),再继承此抽象类使用。可避免直接实现接口时需要实现全部方法,继承此抽象类使用,只需要覆盖关心的方法即可。
2 楼 xhdwell 2010-08-27  
这个在thinking in java里解释的非常透彻了.
1 楼 ironsabre 2010-08-27  
抽像类的典型应用是模板模式,可由一个实体方法来管理一些abstract方法的流程。(继承)
接口的典型应用是策略模式,关注的可替换性。(组合)

相关推荐

Global site tag (gtag.js) - Google Analytics