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


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)  静态构造函数在引用静态字段之前调用。

 

posted @ 2006-04-23 02:29  ccs  阅读(680)  评论(0编辑  收藏  举报