Persuit perfect

step by step,try my best
  首页  :: 新随笔  :: 管理

.Net中的构造函数

Posted on 2007-11-11 15:14  Kathleen  阅读(396)  评论(0编辑  收藏  举报

 一. 构造函数
    1.主要有3类构造函数:实例构造函数(instance),私有构造函数(private),静态构造函数(static)
    2..NET创建对象的过程:(1)分配内存空间,(2)将内存空间清0,(3)调用实例构造函数
    3.在执行构造函数的第一行代码前,每个构造函数必须首先调用基类的一个构造函数

 二.调用顺序
   

从基类开始构造对象。

public class MyBaseClass
    
{
        
public MyBaseClass()
        
{
            Console.WriteLine(
"In MyBaseClass()");
        }

        
public MyBaseClass(int i)
        
{
            Console.WriteLine(
"In MyBaseClass(int i)");
        }

    }

    
public class MyDerivedClass : MyBaseClass
    
{
        
public MyDerivedClass()
        
{
            Console.WriteLine(
"In MyDerivedClass()");
        }

        
public MyDerivedClass(int i)
        
{
            Console.WriteLine(
"In MyDerivedClass(int i)");
        }

        
//public MyDerivedClass(int i, int j)
        
//{
        
//    Console.WriteLine("In MyDerivedClass(int i,int j)");
        
//}
        public MyDerivedClass(int i, int j)
            : 
base(i)
        
{
            Console.WriteLine(
"In MyDerivedClass(int i,int j):base(i)");
        }

    }

    
class Program
    
{
        
static void Main(string[] args)
        
{
            
//Event1
            MyDerivedClass myObj1 = new MyDerivedClass();
            Console.WriteLine();
            
//Event2
            MyDerivedClass myObj2 = new MyDerivedClass(4);
            Console.WriteLine();
            
//Event3
            MyDerivedClass myObj3 = new MyDerivedClass(4,8);
            Console.WriteLine();
            Console.ReadKey();
        }

    }

 

程序输出:

 

In MyBaseClass()

In MyDerivedClass()

 

In MyBaseClass()

In MyDerivedClass(int i)

 

In MyBaseClass(int i)

In MyDerivedClass(int i,int j):base(i)

很明显,只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。