C#关键字—virtual 、 abstract、interface 的区别
2013-05-27 13:15
513 查看
virtual 、 abstract、interface 的区别
1.virtual是抽象出来的方法或字段 , 以便派生类 (子孙后代类) 来重写这个方法 , 但是需要 “{ }”大括号来声明下代码块 , 这点和 abstract不同
2.abstract是隐式的 virtual , 只允许在 abstract 类中声明 abstract 方法, 这和static类相类似(但abstract类中又不是必须全部声明为abstract 类型的方法) , 而 virtual则不受限制 ;就是说 abstract 比 virtual 定义上就严格很多
3.abstract 和 interface 都不能实例化 :一个是抽象出来的类 ,一个是抽象出来相同功能的接口 ;意味着一个是基于实体的( 动物有很多,人是动物,狗也是动物, 我们可以抽象出 animal类;人可以走路,狗也可以走路,我们可以抽象出来一个 “走路”方法的接口, 一个接口一般就定义专一功能, 否则可能造成接口污染)
4.interface定义也比较严格 :只包含方法声明,函数连“{ }”都不能有,成员除了方法之外还有 属性、事件、索引器; 不能有常量、字段、构造函数、析构函数、静态成员这几类
5. 接口可以实现多重继承, 类在C#中是不实现多重继承的; 可以将接口中的方法声明映射到abstract类中 ,让其子类来实现
注意下:属性和字段的区别:
属性本质上来说是个方法,但是在通过属性给内部字段赋值(set)可以加上自己的逻辑判断或限制等等,通过属性取值取值(get)当然也可以加一些跟你业务逻辑相关的code。总之是用属性是个好习惯,不要直接把字段暴露出来。get{reture xxx;}表示可读set{xxx = value;}表示可写
字段就是类内部用的.存储数据
1.virtual是抽象出来的方法或字段 , 以便派生类 (子孙后代类) 来重写这个方法 , 但是需要 “{ }”大括号来声明下代码块 , 这点和 abstract不同
2.abstract是隐式的 virtual , 只允许在 abstract 类中声明 abstract 方法, 这和static类相类似(但abstract类中又不是必须全部声明为abstract 类型的方法) , 而 virtual则不受限制 ;就是说 abstract 比 virtual 定义上就严格很多
3.abstract 和 interface 都不能实例化 :一个是抽象出来的类 ,一个是抽象出来相同功能的接口 ;意味着一个是基于实体的( 动物有很多,人是动物,狗也是动物, 我们可以抽象出 animal类;人可以走路,狗也可以走路,我们可以抽象出来一个 “走路”方法的接口, 一个接口一般就定义专一功能, 否则可能造成接口污染)
4.interface定义也比较严格 :只包含方法声明,函数连“{ }”都不能有,成员除了方法之外还有 属性、事件、索引器; 不能有常量、字段、构造函数、析构函数、静态成员这几类
5. 接口可以实现多重继承, 类在C#中是不实现多重继承的; 可以将接口中的方法声明映射到abstract类中 ,让其子类来实现
注意下:属性和字段的区别:
属性本质上来说是个方法,但是在通过属性给内部字段赋值(set)可以加上自己的逻辑判断或限制等等,通过属性取值取值(get)当然也可以加一些跟你业务逻辑相关的code。总之是用属性是个好习惯,不要直接把字段暴露出来。get{reture xxx;}表示可读set{xxx = value;}表示可写
字段就是类内部用的.存储数据
相关文章推荐
- C++、C#中 abstract 与 virtual关键字的区别联系
- c#的new、abstract、virtual、override,sealed关键字区别
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- C# abstract virtual interface的区别(付static、override用法)
- C#Virtual方法(虚方法)、Abstract方法(抽象方法)、Interface的区别
- C#关键字abstract virtual interface new override
- C# abstract virtual interface的区别(付static、override用法)
- C#.NET中new, override, virtual abstract关键字的区别
- C#的主要 关键字 new、sealed、partial、interface、virtual、abstract、this、base、override、return、break、continue...
- C#: Interface, Abstract and Virtual 的区别
- C#的static,interface,virtual,abstract,override的区别用法
- C#的static,interface,virtual,abstract,override的区别用法
- 我理解c#中的interface abstract virtual override和new(转)
- C#中virtual与abstract的区别
- [c#] 虚函数(Virtual),抽象函数(abstract)和接口的区别
- c#中的interface abstract与virtual介绍
- C#学习之Abstract和Virtual的区别
- virtual和abstract的区别(C#)
- C#中Abstract和Virtual的区别
- C#关键字: Sealed, Abstract, Virtual和Interface