C#类、接口、虚方法和抽象方法0322
2016-03-22 15:05
246 查看
虚拟方法和抽象方法有什么区别与联系:
1、抽象方法只有声明没有实现代码,需要在子类中实现;虚拟方法有声明和实现代码,并且可以在子类中重写,也可以不重写使用父类的默认实现。
2、抽象类不能被实例化(不可以new),只能实例化实现了全部抽象方法的派生类;而包含虚方法的类可以实例化。
3、虚方法与多态性关系密切,虚方法允许派生类完全或部分重写该类的方法,需写方法体。抽象方法只是一个定义,没有方法体,也就是没有{},也不要在里面写内容。
4、抽象方法是虚拟方法两个相像的一点是都用override重写。
非抽象类与接口的差别
非抽象类和接口的差别很大,它们的差别主要表现在以下几个方面:
1、非抽象类可以有成员变量、常量和构造函数,而接口中不能存在常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。
2、一个非抽象类可以继承多个接口,而只能继承一个类;
3、非抽象类中可以定义具体的方法和实现,而接口只定义方法没有具体的实现;
4、接口成员一定是公共的,而且不能声明为虚拟或者是静态的,而非抽象类中是没有这些限制。
5、非抽象类可以被实例化,而接口不可以。一般来说,非抽象类的内容较接口要丰富得多,非抽象类可以有面向对象所有的绝大部分组成元素。但是接口相对于非抽象类来说更加灵活,两者在使用上冲突不大,在使用的时候视具体情况而定。
、抽象类和接口的使用:
1、 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
2、如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
3、如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
4、抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。C#类、接口、虚方法和抽象方法
1、抽象方法只有声明没有实现代码,需要在子类中实现;虚拟方法有声明和实现代码,并且可以在子类中重写,也可以不重写使用父类的默认实现。
2、抽象类不能被实例化(不可以new),只能实例化实现了全部抽象方法的派生类;而包含虚方法的类可以实例化。
3、虚方法与多态性关系密切,虚方法允许派生类完全或部分重写该类的方法,需写方法体。抽象方法只是一个定义,没有方法体,也就是没有{},也不要在里面写内容。
4、抽象方法是虚拟方法两个相像的一点是都用override重写。
非抽象类与接口的差别
非抽象类和接口的差别很大,它们的差别主要表现在以下几个方面:
1、非抽象类可以有成员变量、常量和构造函数,而接口中不能存在常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。
2、一个非抽象类可以继承多个接口,而只能继承一个类;
3、非抽象类中可以定义具体的方法和实现,而接口只定义方法没有具体的实现;
4、接口成员一定是公共的,而且不能声明为虚拟或者是静态的,而非抽象类中是没有这些限制。
5、非抽象类可以被实例化,而接口不可以。一般来说,非抽象类的内容较接口要丰富得多,非抽象类可以有面向对象所有的绝大部分组成元素。但是接口相对于非抽象类来说更加灵活,两者在使用上冲突不大,在使用的时候视具体情况而定。
、抽象类和接口的使用:
1、 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
2、如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
3、如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
4、抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。C#类、接口、虚方法和抽象方法
相关文章推荐
- C#设置子窗体在主窗体中居中显示解决方案
- 发送传真的c#方法_.NET教程
- C#调用java代码
- C#POST下载文件服务器返回500错误
- C#函数式编程之缓存技术
- 【笔记】《C#大学教程》- 第14章 多线程
- C# 封装一个钩子类
- C# 时间与时间戳互转 13位
- C# 时间与时间戳互转 13位
- C# 流总结
- C# 堆栈(Stack)
- c#大圣之路笔记——c# 页面加载数据过长等待显示框
- 用C# 拓展方法给现有的类增加 可用函数
- C# 使用Log4Net记录程序日志
- C# PLINQ 内存列表查询优化历程
- C#关于AutoResetEvent的使用介绍[转载]
- C# 实现多语言界面
- C# 该行已经属于还有一个表 的解决方法
- CSharp调用默认浏览器打开网页的几种方法
- C#学习笔记 线程同步问题