• C#中的类


      类是面向对象程序设计的核心概念之一。

      1、类的定义

      简单的定义就不多说了,之间看下表,修饰符的含义(使用abstract关键字的类是抽象类,这种类不能被实例化,只能被继承;而使用sealed关键字的类是封装类,这种类只能实例化,不能继承):

      需要使用“:”来继承基类和接口,最多可同时继承一个基类以及很多接口,它们之间需要用“,”隔开。如:

      

    public class MyClass : Mybase, IMyInterface, IMySecondInterface
    {
    }

      2、接口的定义

      接口的定义方式与类相差不大,不活使用的是interface关键字,而不是class。例如:

      

    interface IMyinterface 
    {
    //Interface members
    }

      由于接口不包含执行代码,所以也就没有抽象接口的概念,所以在声明接口是一般使用public 和internal,不能使用abstract和sealed。

      3、构造函数和析构函数

      所有的类都有个默认的构造函数,该函数没有参数,与类同名。我们在类的定义中可以包含几个带参数的构造函数,成为非默认的构造函数。在实例化对象时用new来选择使用哪个构造函数。

    class MyClass
    {
    public MyClass()
    {
    //Default constructor code
    }

    public MyClass(int myInt)
    {
    //Nondefault constructor code(use myInt)
    }
    }
    MyClass myClass = new MyClass(3);

      析构函数主要用于清理对象,声明格式如下:

    class MyClass 
    {
    ~MyClass()
    {
    //Destructor body
    }
    }

      构造函数的执行序列

      在实例化一个派生类时,必须先实例化这个派生类的基类,也就要先实例化这个基类的基类,以此类推,就要先实例化object类。

    因此无论实例化一个什么类,都需要先实例化System.Object类,也就是先执行System.Object.Object()。

      如果一个类使用非默认的构造函数,默认的情况是在其基类上寻找匹配于这个构造函数签名的构造函数。如果没有找到,则使用基类的默认构造函数。例如:

      

      如果以下面的方式实例化:

    MyDerivedClass myObj = new MyDerivedClass();

    则执行的顺序如下:System.Object.Object()——MyBaseClass.MyBaseClass()——MyDerivedClass.MyDerivedClass()

    MyDerivedClass myObj = new MyDerivedClass(1);

    则执行的顺序如下:System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i)

    MyDerivedClass myObj = new MyDerivedClass(1,1);

    则执行的顺序如下:System.Object.Object()——MyBaseClass.MyBaseClass()——MyDerivedClass.MyDerivedClass(int i, int j)

      

    但是如果希望执行的顺序为:System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i, int j)

    则需要将MyDerivedClass的非默认构造函数改为:

    public class MyDerivedClass : MyBaseClass
    {
    ...

    public MyDerivedClass(int i, int j) : base(i)
    {
    }
    }

      base关键字指定.net实例化过程使用基类中匹配指定签名的构造函数。

      除了base关键字外,还有一个this关键字,它指定在调用指定的构造函数前,.net实例化过程对当前类使用非默认的构造函数。如:

    public class MyDerivedClass : MyBaseClass
    {
    public MyDerivedClass() : this(5, 6)
    {

    }

    ...

    public MyDerivedClass(int i, int j) : base(i)
    {

    }
    }

    则执行的顺序如下:System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i, int j)——MyDerivedClass.MyDerivedClass()

  • 相关阅读:
    Python正则表达式指南
    emacs 常用命令与配置
    将代码转换为语法高亮的HTML
    UML 用例图
    Sql Server 2005函数学习(转)
    实现ASP.NET程序性能目标的几种方法转载http://www.wzsky.net/html/Program/net/39759.html
    浅淡SqlServer的Top与Oracle的RowNum 转载自http://www.cnblogs.com/liguangxi8/archive/2010/05/21/1740708.html
    存储过程权限和订单类别
    UrlRewrite(Url重写技术)
    Jquery ajax多级联动
  • 原文地址:https://www.cnblogs.com/zhangkai2237/p/2395234.html
Copyright © 2020-2023  润新知