6.类(1)--类的定义

.C#中类的定义

   1.类的定义方法:

      <accessType> class<className>:<baseClass>,<interface>

     {

       //class member;

     }

  注:

      1).默认情况下类的访问权限是内部的(internal),只有当前项目中才能访问它

      2).类还还有抽象类(abstract修饰,不能实例化、只能继承、可以有抽象成员)和与之对立的密封类(sealed修饰,不能继承),这两种类都有publicinternal类型的

      3).一个类只能有一个基类

      4).如果继承了一个抽象类,必须实现所继承的所有抽象成员(除非其基类也是抽象类)

      5).子类的可访问性不能高于基类,如子类是public,基类不能是internal

      6).支持接口的类必须实现所有的接口成员,但如果不想使用给定的接口,则可以提供一个“空”的实现方式(没有函数代码)

      7).定义接口方式与定义类类似,用关键字interface

      8).定义接口不能用abstractsealed修饰

 2.System.Object

    因为所有的类都继承了System.Object,所有所有的类都能够访问Sytem.ObjectProtectPublic成员。也可以重写其方法

3.构造函数和析构函数

    C#定义类时,常常不需要定义构造函数和析构函数,编译器会自动添加,但有可在必要的时候添加。

    1).构造函数定义方法:

         <accessType> <className>(paramater1,…)

          {

                //Constructor code;

          }

         1>.构造函数与类同名

         2>.默认构造函数没有参数,且访问控制权限为public

         3>.构造函数是用来创建类的实例的,但也可以有Internal的构造函数,这个构造函数不能创造类的实例

         4>.构造函数可以有多个,参数集不能重复

  2)继承关系中构造函数的调用

   1>.子类实例化时先调用的是父类的默认构造函数,再调用自己的默认构造函数和有参构造函数。

   2>.父类的有参构造函数用base关键字调用

  3).静态构造函数

   1>.静态构造函数一般用于类的静态成员的初始化

   2>.静态构造函数不能有参数,不能有修饰符

   3>.静态构造函数在类被加载时自动被调用,不能单独调用

   4>.静态构造函数最多只能被调用一次,即一个类被实例化多次也只执行一次静态构造函数

   5>.静态构造函数在类的任何静态变量初始化之前和被使用前执行;在任何实例变量被分配之前执行

     2).析构函数的定义

           ~ <className>()

           {

               //Destructor body;

           }

      3).构造函数的执行序列

         1>.实例化继承子类,必须先实例化其基类,要实例化其基类就得先实例化其基类的基类,直到实例化Sytem.Object为止

         2>.除非明确指示,否则使用期默认构造函数。上述一连串不论子类用的是否默认构造函数,基类一定用其默认构造函数

         3>.实例化子类时如果要使用基类的非默认构造函数,可用base(<paramater>)关键字指定使用固定参数的构造函数

 5.类库项目

    如果一个项目只包含类(以及其他相关类的定义,但没有入口点),该项目就称为类库。类库项目被编译为.dll文件

    将类库项目加入参考,并用using语句写入主程序即可被引用。..

6.接口和抽象类

   1).二者的相同之处

      1>.都包含可以由派生类继承的成员

      2>.都不能直接实例化,但可以声明这些类型的变量。然后把继承这两种类型的对象指定给他们的变量,同过变量来使用其成员

  2).二者的不同之处

      1>.类只能直接继承于一个抽象类(可用继承链继承多个类),但类可以有多个接口

      2>.抽象类可以拥有抽象成员(没有代码体,且必须在派生类中实现,除非派生类本省也是抽象的)和非抽象成员;接口成员必须被使用它的类实现

      3>.接口成员的定义倾向于公共的,但抽象类的成员可以是私有的、受保护的、内部的

      4>.接口不能包含字段、构造函数、析构函数、静态成员或常量

7.结构和类

   结构:值类型,把结构A赋值给结构B,是指把结构A中的内容全部复制到结构B

   类:引用类型,把类A的对象赋值给类B的对象,是指把类A的对象在内存中的地址复制给类B的对象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章