浅谈面向对象程序设计C#中的类

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

创新互联是一家集网站建设,江西企业网站建设,江西品牌网站建设,网站定制,江西网站建设报价,网络营销,网络优化,江西网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

  1、类的定义

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

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

  publicclassMyClass : Mybase, IMyInterface, IMySecondInterface{}

  2、接口的定义

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

 
 
 
 
  1.   interfaceIMyinterface
  2.   {
  3.   //Interface members
  4.   }

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

  3、构造函数和析构函数

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

 
 
 
 
  1.   classMyClass
  2.   {
  3.   publicMyClass()
  4.   {
  5.   //Default constructor code
  6.   }
  7.   publicMyClass(intmyInt)
  8.   {
  9.   //Nondefault constructor code(use myInt)
  10.   }
  11.   }
  12.   MyClass myClass = newMyClass(3);

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

 
 
 
 
  1.   classMyClass
  2.   {
  3.   ~MyClass()
  4.   {
  5.   //Destructor body
  6.   }
  7.   }

  构造函数的执行序列

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

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

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

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

  MyDerivedClass myObj = newMyDerivedClass();

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

  MyDerivedClass myObj = newMyDerivedClass(1);

  则执行的顺序如下:

 
 
 
 
  1. System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i)
  2.   MyDerivedClass myObj = newMyDerivedClass(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的非默认构造函数改为:

 
 
 
 
  1.   publicclassMyDerivedClass : MyBaseClass
  2.   {
  3.   ...
  4.   publicMyDerivedClass(inti, intj) : base(i)
  5.   {
  6.   }
  7.   }

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

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

 
 
 
 
  1.   publicclassMyDerivedClass : MyBaseClass
  2.   {
  3.   publicMyDerivedClass() : this(5, 6)
  4.   {
  5.   }
  6.   ...
  7.   publicMyDerivedClass(inti, intj) : base(i)
  8.   {
  9.   }
  10.   }

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

分享名称:浅谈面向对象程序设计C#中的类
网站路径:http://www.shufengxianlan.com/qtweb/news6/301106.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联