首页 > 代码库 > 接口2014年6月11日01:11:37

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

 1 【1C#中的接口和类有什么异同。 
 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 接口的多态特性、类型转换、isas 和类基本一样。
 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进行遍历。