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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡松涛 中级黑马   /  2012-7-18 21:25  /  1981 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class和interface有什么区别

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
abstract class  是一个抽象类,声明了这个,就等于独立的一个类了,其他的类不能继承... 抽象方法是没有方法体的方法。  
interface是C# 中接口操作的关键字,功能是把所需成员组合起来,以封装一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。接口不能直接实例化,即ICount ic=new iCount()是错的。接口不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。接口使用interface关键字进行声明。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
抽象类主要用作对象系列的基类,共享某些主要特性;
接口(接口成员是没有代码体的,必须在使用接口的类上实现)主要用于类,这些类在基础水平上有所不同,但仍可完成某些相同的任务。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
共同点:
   都不能被直接实例化,都可以通过继承实现其抽象方法。
不同点:
1 接口支持多继承,但抽象类却不可以。
2 接口只提供行为,不能实现方法行为;但抽象类却可以实现
3 接口中只包含方法,事件,属性,索引的签名,不能具体定义和实现,而抽象类可以。
4 接口可以作用于值类型(struct),而抽象类只可以定义与引用类型

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1,在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法;
2,在接口中无成员变量,而抽象类中可有成员变量。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
区别有:
        1、抽象类通过abstract定义,接口通过interface定义
        2、抽象类可以包含已实现的方法,接口不可以
        3、抽象类只支持单继承,接口支持多继承
        4、实现抽象类的方法需要使用override,实现接口的方法时直接实现其方法。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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