1、  C#里面的继承有两种:实现继承和接口继承。前者表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数;后者表示一个类型只继承了函数的签名,没有继承任何的实现代码。
2、  C#不像C++支持多重继承,但是可以派生于另一个类和任意多个接口
3、  结构总是派生于System.ValueType,它们还可以派生于任意多个接口;类总是派生于用户选择的另一个类,它们还可以派生于任意多个接口。
4、  C#中虚拟函数的声明方式为:
access-identifier virtual return-type function-name()
成员字体和静态函数都不能声明为virtual
在基类中重载虚函数用关键字override
access-identifier override return-type function-name()
5、  C#中用关键字new隐藏基类中的同名但是非虚函数
access-identifier new return-type function-name()
6、  在C++中抽象类不能实例化,而抽象函数没有执行代码。C#中对抽象的定义是相同的,用法则是要加上关键字abstract。抽象的也是虚拟的,但是不需要加上virtual,并且如果加上的话将会是一个语法错误。
access-identifier abstract class-name/function-name
7、  C#中引入了一个C++中没有的概念:密封
什么是密封呢?对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。
access-identifier sealed class-name/function-nam
8、  下面是C#中修饰符的具体意义:
修饰符
应用于
说明
public
所有的类型或成员
任何代码均可以访问该成员
protected
类型和内嵌类型(即在一个类中定义的类)的所有成员
只有派生的类型能访问该成员
internal
类型和内嵌类型的所有成员
只能在包含它的程序集中访问该成员
private
所有的类型或成员
只能在它所属的类型中访问该成员
protected internal
类型和内嵌类型的所有成员
能在包含它的程序集派生类型中访问该成员
 
 
 
new
函数成员
成员用相同的签名隐藏继承的成员
static
所有的成员
成员不在类的具体实例中执行
virtual
仅函数成员
成员可以由派生类重写
abstract
类和函数成员
抽象成员定义了成员的签名,但没有提供实现代码
override
仅函数成员
成员重写了继承的虚拟或抽象成员
sealed
成员重写了继承的虚拟成员,但继承该类的任何类都不能重写该成员。必须与override一起使用
extern
仅静态[DllImport]方法
成员在外部用另一种语言实现
9、  声明接口在语法上与声明抽象类完全相同
access-identifier interface name
但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。不能实例化接口,在接口定义中还不允许声明成员上的修饰符。
Category: 笔记
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>