博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

接口与抽象类的区别

Posted on 2010-10-25 16:44  gczhao  阅读(201)  评论(0编辑  收藏  举报

抽象類:a.包含一個或多個抽象方法或屬性的類必須定義為抽象類
       b.繼承抽象類的派生類必須實現抽象類的所有抽象方法或
         屬性,否則該派生類也必是抽象類,至到完全實現為止.
       c.抽象類必須是公共的(public).
       d.抽象類不存在對象實例,但可以申明引用變量.另外抽象類
         中可以有非抽象方法,供派生類調用.
接口:1.接口中定義抽象的方法,屬性,索引,事件
     2.接口必須由類來實現,故其只能是默認public的,不可顯式申明,不能申明為
      static
     3.實現接口的類必須完全實現接口中的所有的方法屬性,索引,事件,不能只實現一部分
     4.一個類只能繼承一個基類,但可以實現多個接口,其中繼承的基類必須放在最
       前面,然后是接口,它們用逗號分開.

 

1、接口中只能有方法,不能有字段,抽象类中即可以有方法,也可以有属性和字段;
2、接口中的方法不需要实现,而抽象类中可以有实现了的方法;
3、接口在一定程度上可以代替多继承。
4、实现接口,也就意味着必须实现接口中的所有方法。如果继承抽象类的子类还是抽象类,则可以只实现部分方法。
5、接口和抽象类都不被实例化成对象。

 

 

我想,许多人对抽像与接口不清楚的原因,可能是不知什么情况下用接口好还是用抽象好吧。
书上讲了一大堆,高人说过无数次。我觉得用接口主要原因是项目越做越大,而且参与的人员多,张三有张三的写法,李四有李四的写法,但为了提高开发效率,我们要做一些基础性的工作,比如一些通用的代码方法、函数。于是我们就把这些方法和函数放在抽象类,子类只要继承就拥有该法了,这个基础类就是抽像类。但是编程还会碰到另一种情况:经理叫张三开发系统客户端,王五开发服务器,但客户端怎么访问服务端呢,这就要有个中间契约,双方都能看懂,只要双方遵守,就知通讯。这就是接口。