接口2014年6月11日01:11:37


 1 【1】C#中的接口和类有什么异同。
2
3 不同点:
4 不能直接实例化接口。
5 接口不包含方法的实现。
6 接口可以多继承,类只能单继承。
7 类定义可在不同的源文件之间进行拆分(partial)。
8
9 相同点:
10 接口、类和结构都可以从多个接口继承。
11 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
12 接口和类都可以包含事件、索引器、方法和属性(属性本质上是两个方法)。
13
14 基础知识:接口只能定义方法(只能定义行为,不能定义实现也就是字段),因为事件、索引器、属性本质上都是方法,所以接口中也可以定义事件、索引器、属性。


 1 【2】抽象类和接口有什么区别?
2
3 相同点:
4 都不能被直接实例化,都可以通过继承实现其抽象方法。
5
6 不同点:
7 接口支持多继承;抽象类不能实现多继承。
8 接口只能定义行为(能力);抽象类既可以定义行为(能力),还可能提供实现。
9 接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;
10 抽象类可以定义字段、属性、包含有实现的方法。
11 接口可以作用于值类型(Struct)和引用类型(Class);抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
12 加分的补充回答:讲设计模式的时候SettingsProvider的例子。


1 public interface Flyable()
2 {
3 void fly();//接口中的方法不能声明public、private等,因为没有意义,private是类内部互相调,哪儿来的类内部?.
4 }
5
6 abstract class Shape
7 {
8 public abstract double GetArea();//有抽象成员,类必须标记为抽象类
9 }


 1 【3】一个类只能继承自一个类,但是可以实现多个接口
2
3 一个抽象类中可以定义实现代码,但是接口不能定义实现代码(哪怕方法中只是一个空的括号,也是空实现)。
4
5 接口的多态特性、类型转换、is、as 和类基本一样。
6
7
8 抽象类定义的是公共的实现和能力,接口只能定义公共的能力。
9
10 接口相当于给类打一个标签,标志这个类有这种能力。
11
12
13 接口中的方法不能声明public、private等,因为没有意义,private是类内部互相调,哪儿来的类内部?
14
15 接口中能声明:方法,属性(属性本质是两个方法),索引器,不能声明字段。

【4】常用系统接口:
//using,实现了IDisposable接口的对象可以使用using进行资源声明,出了using的作用域以后自动调用Dispose方法。 Dispose和Close的区别:实现了IDisposable接口必须定义Dispose方法,但不一定有Close方法,很多Dispose的实现都是调用Close方法。SqlConnection Close以后还能重新Open,但是Dispose以后就不能再用。
//foreach:实现了IEnumerable接口的对象都可以使用foreach进行遍历。

接口2014年6月11日01:11:37,布布扣,bubuko.com

时间: 2024-12-26 18:44:38

接口2014年6月11日01:11:37的相关文章

虚方法2014年6月10日01:50:45

什么是方法重写? 方法重写是指子类继承父类后在子类中有一个与父类中某个方法签名一致,但方法内容可以重新定义的方法,并用override关键字修饰.只有用virtual.abstract.override修饰的方法在继承后子类可以重写. 方法重写的意义: 为所有子类定义了某种规范(某种必须有的规范),多态.-----------这里的规范可以理解为"行为",就是方法,等同于接口中提到的规范.其实目的就是让新增加的类必须具有某些方法,这样才能满足我们程序中的要求.(对程序扩展做了一定的约束

数据库2014年6月10日11:13:10

SQL语句创建数据库: create table student(id int not null primary key,number nvarchar not null,name nvarchar not null,brithday DateTime default getdate(), adress nvarchar ) 创建一个学生表,主键为id,not null 表示不为空,default getdate()表示设定默认值为当前时间. 空值处理函数:select isnull (Name

android客户端应用(native app)适配测试自动化 东海陈光剑 2014年5月5日 0:39:04

未命名 android客户端应用(native app)适配测试自动化 东海陈光剑 2014年5月5日 0:39:04 http://10.125.1.58:88/report.html?run_stamp=20140428054354&min=3&sec=214 <!doctype html><html><head>    <meta charset="UTF-8">    <title>适配测试报告<

php 学习路线 赵兴壮2014年4月28 日 加油

第一阶段 第一讲,WEB基础     1.1 网站基本知识: 1.2 网络协议介绍: 1.3 B/S与C/S结构的区别: 1.4 WEB编程.网站开发技术介绍.      第二讲,网页设计     2.1 Dreamweaver介绍及使用: 2.2 静态网页HTML语言: 2.3 标题与段落,换行与分割线: 2.4 表格.表单: 2.5 框架.超链接.图片.     实例:1,使用表格进行网页布局设计: 2,使用表单.表格.框架进行系统后台界面设计. 第三讲,DIV+CSS     3.1 CS

2014年6月6日22:35:21

sln:使用解决方案文件(后缀为sln的文件)表示一个项目组,他通常包含一个解决方案中所有的项目信息.一个sln文件通常由三部分组成:1. 文件版本.2. 工程信息.3. 全局设置. csproj:它是"C Sharp Project"的缩写...net 开发环境中建立项目时,会产生 .csproj 文件,这是C#的项目文件,其中记录了与项目有关的相关信息,例如包含的文件,程序的版本,所生成的文件的类型和位置的信息等. 1 //换行.看起来是两个,其实\和后面的是一体的 2 char

2014年7月10日,我人生的最重要Upgrade

2014年7月10日上午,我的小公主顺利的出生于国妇婴.之前各种紧张,各种不安.在不安中的前天晚上陪着来上海的董博士于方先生在人民广场聚餐.大家都是工作几年的,各种感慨,对于工作中的零零种种.还有对未来的模糊规划.在近11点,散伙回家,在酒精的刺激下,终于睡了个好觉. 在10号的六点半,起床,快速的洗漱后打车到国妇婴,要赶到早高峰之前到达,要知道,从浦东到浦西还是有很多红绿灯的,尽管只有15公里.到达了,陪着老婆做产前的各种检查.当确定了产后还是住六人间的小床后,觉得不可思议,怎么能让产妇和新生

静态类2014年6月9日10:02:28

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace 静态类密闭类 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 //A a = new A();//错误,静态类不能new 13 14 //Math m = new Math();//错误,静态类不能

2014年6月7日08:51:30

一个函数由这么几部分组成,函数名.参数个数.参数类型.返回值,就是把函数名字去掉以后,剩下的东西(返回值.参数.调用方式等)就是函数的签名.函数在重载时,利用函数签名的不同(即参数个数与类型的不同)来区别调用者到底调用的是那个方法. 构成重载的条件:参数类型不同,顺序不同或者参数个数不同(不严谨的),与返回值无关. 1 //C#中方法重载有:参数的顺序不同的方法称为重载这一条. 2 public static int Add(int j, double i) 3 { 4 int sum = 0;

字符串 2014年6月7日12:51:07

1.单个字符也可以表示为字符串,还可以有长度为0的字符串(就是"",空字符串).null和""的区别,String.IsNullOrEmpty 1 string s = " ";//" "不是empty 2 3 //s == "" 相等于 s == string.Empty 4 if (string.IsNullOrEmpty(s))//等价于s == null || s == "" 5