浅析C#中接口的重要性
2015-09-01 08:53
399 查看
C#中有了接口这一概念。我觉得接口就像是C++中的抽象基类。
接口可以理解为是一种约定,使得实现这个接口的类或是结构在形式上保持一致。
声明接口:
语法和声明抽象类完全相同。
注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。
接口使用:
总结:
1、C#中的接口是独立于类来定义的。这与 C++模型是对立的,在 C++中接口实际上就是抽象基类。
2、接口和类都可以继承多个接口。
3、类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。
4、一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。
5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。
正如我们开头提到的C#中的接口就如同C++中的抽象类,但是C#中同样也存在抽象类,那么c#中的抽象类和接口又有什么区别呢?请看博客《浅析C#中的抽象类和接口的区别》
接口可以理解为是一种约定,使得实现这个接口的类或是结构在形式上保持一致。
声明接口:
语法和声明抽象类完全相同。
public interface IBankAccount { void PayIn(decimal amount); bool Withdraw(decimal amount); decimal Balance { get; } }
注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。
接口使用:
class SaverAccount : IBankAccount { private decimal balance; public decimal Balance { get { return balance; } } public void PayIn(decimal amount) { balance += amount; } public bool Withdraw(decimal amount) { if (balance >= amount) { balance -= amount; return true; } Console.WriteLine("Withdraw failed."); return false; } public override string ToString() { return String.Format("Venus Bank Saver:Balance={0,6:C}", balance); } }
总结:
1、C#中的接口是独立于类来定义的。这与 C++模型是对立的,在 C++中接口实际上就是抽象基类。
2、接口和类都可以继承多个接口。
3、类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。
4、一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。
5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。
正如我们开头提到的C#中的接口就如同C++中的抽象类,但是C#中同样也存在抽象类,那么c#中的抽象类和接口又有什么区别呢?请看博客《浅析C#中的抽象类和接口的区别》
相关文章推荐
- C#中隐藏的15大功能
- WIN8-Metro风格开发---入门篇(C#补全计划)
- C#中的空值的判断
- C#基础------文件读写操作案例
- C#基础------文件读写操作
- C# WinForm开发系列 - CheckBox/Button/Label/ProgressBar
- C#中的线程(一)入门
- C#中的线程(一)入门
- C# 实现生产者消费者队列
- C# 图片Base64 编码,图片格式转换
- C#中的格式化输出
- C#发布访问共享目录
- C# fixed语句固定变量详解
- C#项目关于程序中使用管理员权限的程序的打包,需要注意的事项
- .net c#重装系统打开原工程或者打开低版本工程编译时报“加载属性“OutputPath”失败”
- Fastdb 之中文字符截取错误的问题
- C#把UNICODE编码转换为GB编码
- AjaxFileUpload 在C#中应用
- C# 获取当前路径方法(经典&重要)
- C#中几种int转换形式