A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© honeys天空s 中级黑马   /  2013-12-1 12:15  /  1652 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 honeys天空s 于 2013-12-1 21:59 编辑

想问一下,类和接口具体都有哪些不一样的地方吗?有点搞不清楚,求大神解释下啊

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

8 个回复

倒序浏览
在C#中接口是负责功能的定义,项目中通过接口来规范类,而类是负表具体功能的实现。

一个类可以继承一个基类也就是父类,但可以实现多个接口(接口其实就是实现了多继承)。

在类中也有抽象类的定义,抽象类用abstract声明,抽象类(abstract class)不能实列化,抽象类里可以有抽象的方法,属性,也可以有具体的方法和属性。也就是说抽象类里可以有抽象方法,也可以有具体的方法,但是有抽象方法的类一定是抽象类。

接口(interface)只是功能的定义,是一个行为的规范,接口中可以包含方法,属性,而这些只有定义,而没有实现体。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
类似:
1.抽象类和接口都包含可以由派生类继承的成员
2.接口和抽象类都不能直接实例化,但可以声明它们的变量。如果这样做,就可以用多态性把继承这两种类型的对象指定给它们的变量。接着通过这些变量来使用这些类型的成员,但不能直接访问派生对象的其他成员

区别:
1.派生类只能继承一个基类,即只能直接继承一个抽象类
2.相反,类可以使用任意多个接口
3.抽象类可以拥有抽象成员(没有代码体,且必须在派生类中实现,否则派生类本身必须也是抽象的)和非抽象成员(它们拥有代码体,也可以是虚拟的,这样就可以在派生类中重写)
4.接口成员必须都在使用接口的类上实现---它们没有代码体
5.接口成员是公共的(因为它们倾向于在外部使用),但抽象类的成员可以是私有的(只要它们不是抽象的),受保护的,内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)
6.接口不能包含字段,构造函数,析构函数,静态成员或常量

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
1. 接口, 类和结构都可以从多个接口继承;
2. 接口类似于抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员;
3. 接口和类都可以包含事件,索引器,方法和属性;
4. 接口和类不能直接实例化接口;
5. 接口不包含方法的实现;
6. 接口可以多继承,类只能单继承;
7. 类定义可在不同的源文件之间进行拆分。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
接口:
接口可以是命名空间或类的成员,并且可以包含下列成员的签名:

方法

属性

索引器

事件

一个接口可从一个或多个基接口继承。

当基类型列表包含基类和接口时,基类必须是列表中的第一项。

实现接口的类可以显式实现该接口的成员。显式实现的成员不能通过类实例访问,而只能通过接口实例访问。

类:
类是 C# 中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。与结构不同,类支持继承,而继承是面向对象编程的基础部分。

C# 中仅允许单个继承。也就是说,类只能从一个基类继承实现。但是,一个类可以实现一个以上的接口。

一个类可包含下列成员的声明:

构造函数

析构函数

常数

字段

方法

属性

索引器

运算符

事件

委托



接口

结构

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
接口:由全局常量和抽象方法组成
抽象类:有抽象方法的类必须是抽象类,也就是说抽象类里面可以既有抽象方法也可以有非抽象方法

抽象类只可以单继承,可以实现多个接口
接口可以多实现,可以继承多个接口,不能继承一个抽象类

一个抽象类必须被子类所继承,被继承的子类(如果子类不是抽象类)则必须复写抽象类中的全部抽象方法。
一个接口定义完成之后,接口本身也是需要子类(如果子类不是抽象类的话)来复写接口中的所有的抽象方法。

他们的用途都是强制让子类复写实现他的功能

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
声明方法的存在而不去实现它的类被叫做抽象类.
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
V_John 中级黑马 2013-12-1 16:19:28
8#
如果问题得到解决,请修改为已解决
回复 使用道具 举报
V_John 发表于 2013-12-1 16:19
如果问题得到解决,请修改为已解决

恩恩          :)好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马