日期:2014-05-19  浏览次数:20728 次

请问抽象类和接口有什么区别呀
多多指教

------解决方案--------------------
1、接口可以多重继承,抽象类只能单一继承。
2、接口只有方法,属性的定义。抽象类可以包含方法体。

首先抽象类中有抽象成员和非抽象成员(和普通类成员一样),而接口的所有成员都必须在实现接口的代码类中实现。

抽象类可以有自己的字段,但是接口不能有自己的字段,构造函数,析造函数,静态成员或常量。

从用途上来说,抽象类主要是提供为对象系列的基类,共享一些主要特性,使继承于一个抽象类的对象都具有一个共同的目的或者结构。(所以我们可以把抽象类看成是对对象的一个特性)。接口主要是为一批类提供一些相同,而有必须实现的任务。实现同一个接口的一批类,就会强制的实现一些必须实现的接口成员,使编写更规范。(所以我们可以把接口看成是对类的一个特性)。

举一个例子来看:

膝上电脑和台式电脑都可以由一个抽象类来派生,这个抽象类具有电脑的某些特性,比如内存的型号,大小,电源要求等。这些特性是和具体的对象有关,我们需要从电脑来派生出我们自己的膝上电脑和台式电脑类。但是无论是什么电脑他们都会有些相同的目的,比如编写程序,拽写文档,打游戏等。我们可以为这些派生的类指定一个接口,以便他们都能实现这些相同目的的功能,例如游戏功能IgameInterface.

------解决方案--------------------
抽象类除了不能实例化以外其余和普通类一样

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