1. 如果不为类编写构造函数,编译器就会创建一个默认的构造函数,运行时会在创建新对象时调用它。

2.  构造函数互相之间的可链接关系

 1using System;
 2
 3namespace Webtest
 4{
 5     /**//// <summary>
 6     /// manager 的摘要说明。
 7     /// </summary>
 8     public class manager
 9     {
10         public manager():this("test",0)
11         {}
12 
13         public manager(string name):this(name,0)
14        {}
15
16         public manager(string name,int grade)
17         {
18              this.Grade = grade;
19              this.Name = name;
20         }
21          private string mName;
22         public string Name
23         {
24              get
25              {
26                   return this.mName;
27             }
28              set
29              {
30                   this.mName = value;
31              }
32         }
33          private int mGrade;
34         public int Grade
35         {
36              get
37              {
38                   return this.mGrade;
39              }
40              set
41              {
42                   this.mGrade = value;
43              }
44         }
45 
46     }
47
48

3.调用基类的构造函数

每个派生类都隐式或者显示的调用基类的构造函数,实际上,如果没有显示的调用基类的构造函数,则CLR就会

调用无参数的构造函数。

基类的构造函数只能从派生类的构造函数中调用。调用完才执行派生类的构造函数代码块中的实现。

4.私有构造函数

私有构造函数一般包含在许多静态方法的类中,这些静态方法用作一个库,而不是对象。添加构造函数将确保

类不能在外部被创建。这也是在很多设计模式中都有用到的

使用私有构造函数的2个意义是:

1)  私有构造函数不能在外部被创建。

2)  如果不提供参数,所创建的对象是无意义的。

a)   无论指定与否,派生类中是要调用基类的构造函数,这表示,带有私有构造函数的类不能用做基类,因为

他们的构造函数对派生类来说是不可见的。

b)   当另一个类嵌套在带有私有构造函数的类中时,包含私有构造函数的类就可以由其他对象创建。无论对象

是不是私有,嵌套的构造函数总是可以创建其容器类的实例。

using System;

namespace Webtest
{
     /**//// <summary>
     /// manager 的摘要说明。
     /// </summary>
     public class manager
     {
         public manager():this("test",0)
         {}
 
         public manager(string name):this(name,0)
        {}

         public manager(string name,int grade)
         {
              this.Grade = grade;
              this.Name = name;
         }
          private string mName;
         public string Name
         {
              get
              {
                   return this.mName;
             }
              set
              {
                   this.mName = value;
              }
         }
          private int mGrade;
         public int Grade
         {
              get
              {
                   return this.mGrade;
              }
              set
              {
                   this.mGrade = value;
              }
         }
 
     }

5.静态构造函数

静态的构造函数是不能重载的,所以可用的静态构造函数只有一个默认的无参数构造函数。静态构造函数也不

能显示调用,不能在派生类中继承,但是在创建基类类型时可以调用。

几个原则:

1)  静态构造函数在创建类的实例之前调用

2)  静态构造函数在创建类的第一个实例之前调用

3)  静态构造函数在引用静态字段之前调用。

转载于:https://www.cnblogs.com/ccsonline/archive/2006/04/23/382518.html

C#面向对象系列(2):构造函数的用法相关推荐

  1. (二)Javascript面向对象编程:构造函数的继承

    Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承&q ...

  2. javascript面向对象系列第三篇——实现继承的3种形式

    前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.开宗明义,继承是指在原有对象的基础上,略作修改,得到一个新的对象.javascript主要包括类式继承.原型继承和拷贝继承这三种 ...

  3. java学习笔记(三)----成员权限,构造函数,this用法

    成员权限                         本类    同包类    非同包子类    非同包非子类 public         y        y               y  ...

  4. php 反射对象属性,php面向对象之反射功能的用法详解

    这篇文章主要介绍了php面向对象之反射功能与用法,结合实例形式简单分析了php5面向对象反射的概念及具体用法,需要的朋友可以参考下 本文实例讲述了php面向对象之反射功能与用法.分享给大家供大家参考, ...

  5. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  6. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. python_day6_面向对象的介绍/构造函数/类变量和实例变量/析构函数/私有属性和私有方法/继承、多继承和继承实例/多态

    python_面向对象的介绍/构造函数/类变量和实例变量/析构函数/私有属性和私有方法/继承.多继承和继承实例/多态 在这里得感谢,老师Alex金角大王(路飞学城IT) Python(给兄弟们挂个

  8. 面向对象系列教材 (一)- Java中的类和对象

    面向对象系列教材 (一)- Java中的类和对象 本章节会引入面向对象的基本概念 (但是不会深入展开,仅仅是引入. 深入的学习会在后续的类和对象以及接口与继承 中展开) 相信你肯定玩过DOTA或者LO ...

  9. javascript面向对象系列第一篇——构造函数和原型对象

    前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如何用构造函数和原型对象来创建对象 构造函数 构造函数是 ...

最新文章

  1. android.os.NetworkOnMainThreadException异常
  2. jq 获取当时时间的到秒_空军飞行员忆战机被鸟撞后的37秒
  3. HIve分组查询返回每组的一条记录
  4. 19、Java Swing JToolBar:工具栏组件
  5. Java中的全局变量和局部变量——简单区别
  6. 第4章 Python 数字图像处理(DIP) - 频率域滤波4 - 单变量的离散傅里叶变换DFT
  7. Linux操作系统之简易实现server/client
  8. mysql的未提示输入密码
  9. 站点简介(欢迎大家踊跃参与本站站点的建设,谢谢)
  10. 乌班图vim怎么编译c语言,在Ubuntu上利用vim进行程序编写及运行
  11. 玩家浅谈MID平板电脑主流中端方案
  12. 计算机在线作业office,全国计算机一级office题库与答案
  13. AutoCAD中添加块和块参照(转载)
  14. 通过Chrome实时调试webview
  15. Java 抽象类和接口,看这一篇就够了
  16. NS3网络仿真项目(三)—— Events Simulator
  17. 公共数据库介绍~OECD经合组织数据库
  18. linux怎么查看文件内容
  19. 数组中相同id的其他属性进行拼接的方法
  20. Hungry Sequence

热门文章

  1. 8.1 Android Basic 数据存储 Preferences Dialog(使用对话框的Preferences)
  2. Asp.net页面之间传递参数的几种方法
  3. (67)FPGA模块调用(Verilog调用system Verilog)
  4. (28)Verilog HDL循环语句:for
  5. (38)FPGA面试题Verilog设计计数器
  6. Vivado过程文件解释
  7. FPGA状态机跑飞原因分析
  8. 利用Vivado封装DCP文件基本流程
  9. 2 打两拍verilog与Systemverilog编码
  10. html如何实现字体逐个输入,HTML – 如何将字体真棒图标插入文本输入?