论坛首页 入门技术论坛

抽象类和接口的区别

浏览 6682 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-08-26  
昨天研究了一下抽象类和接口。发现他们两个意义上很相近,但是区别又很大
我们都知道接口里只有方法名,没有方法体。抽象类也是,但是跟接口最大的不同之处在于当程序有必要的时候可以往抽象类里面写方法体,以提供方便(虽然不推荐这么做)。
而且因为Java的单继承性使得,一个类不能从另一个类继承太多的方法。因此这种情况应该使用接口,用接口来定义很多方法,方便类实现这些方法。
当一个类实现了一个接口,那就说明它把接口里的方法都实现了-也就是说类里有接口里的所有的方法,因此占用了很大的资源空间,不管它有没有使用这些方法。
但是当一个类继承抽象类的时候,加入这个类没有调用父类的方法或没有重写这些方法,那这个类就不会实现这些方法,也就是说省了很大的空间。
基于这个特性,出来了一个非常常用的模式-缺省适配器模式。
这些是我的一些了解,希望我了解的错的话多多给我指正。
   发表时间:2010-08-27  
抽像类的典型应用是模板模式,可由一个实体方法来管理一些abstract方法的流程。(继承)
接口的典型应用是策略模式,关注的可替换性。(组合)
0 请登录后投票
   发表时间:2010-08-27  
这个在thinking in java里解释的非常透彻了.
0 请登录后投票
   发表时间:2010-08-27  
一个接口,以抽象类实现之(一些空实现和一些必要实现),再继承此抽象类使用。可避免直接实现接口时需要实现全部方法,继承此抽象类使用,只需要覆盖关心的方法即可。
0 请登录后投票
   发表时间:2010-08-27  
接口是is a XX,抽象类是like a XX的关系,很好记~~
0 请登录后投票
   发表时间:2010-08-27  
引用
但是当一个类继承抽象类的时候,假如这个类没有调用父类的方法或没有重写这些方法,那这个类就不会实现这些方法,也就是说省了很大的空间。

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

0 请登录后投票
   发表时间:2010-08-28  
抽象类中可以放一些静态的东西
0 请登录后投票
   发表时间:2010-08-28  
huahuashijie888 写道
接口是is a XX,抽象类是like a XX的关系,很好记~~

你确定?

如果很好记,记错了更麻烦。
0 请登录后投票
   发表时间:2010-08-28  
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?
0 请登录后投票
   发表时间:2010-08-28  
XTU_xiaoxin 写道
你回去能专心看看书,行不?
跑到这上面来学别人发什么贴?害人?
年轻人,好好学习!别到这上面来凑热闹,专心看帖就行了,明白?

太打击人的积极性了吧
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics