11.类的构造(2)

1. 构造器会显示(" 我是类A的无参构造器"and"我是类B的无参构造器"

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            B b = new B(45);
        }
    }
    class A
    {
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");
        }
 
    }
    class B:A
    {
        public B()
        {
            MessageBox.Show("我是类B的无参构造器");
        }
       
    }

2.带有一个参数的构造器会显示(" 我是类A的无参构造器"and"我是类B的带有一个参数的构造器"

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            B b = new B(45);
        }
    }
    class A
    {
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");  //去掉无参构造器会出错
        }
        public A(int i)
        {
            MessageBox.Show("我是类A的带有一个参数的构造器");
        }
    }
    class B:A
    {
        public B()
        {
            MessageBox.Show("我是类B的无参构造器");
        }
        public B(int i):
        {
            MessageBox.Show("我是类B的带有一个参数的构造器");
        }
    }

3. 如果想显示类A可以用 base关键字会显示("我是类A的带有一个参数的构造器"and"我是类B的带有一个参数的构造器"

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            B b = new B(45);
        }
    }
    class A
    {
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");
        }
        public A(int i)
        {
            MessageBox.Show("我是类A的带有一个参数的构造器");
        }
    }
    class B:A
    {
        public B()
        {
            MessageBox.Show("我是类B的无参构造器");
        }
        public B(int i):base (i)
        {
            MessageBox.Show("我是类B的带有一个参数的构造器");
        }
    }

4. 静态构造器注意的事项( static constructor )

1.静态构造器在任何实例变量分配之前执行。显示为("我是类A的静态构造器"and"100"

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show(A.i+"");
        }
    }
    class A
    {
        public static int i = 100;//“i”为空时; 默认值为0
        static A()
        {
            MessageBox.Show("我是类A的静态构造器");
        }
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");
        }
       
    }

5.在一个程序的执行过程中静态构造器最多只执行一次

(1)显示为("我是类A的静态构造器"and" 我是类A的无参构造器"

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            A a = new A();
        }
    }
    class A
    {
        public static int i = 100;
        static A()
        {
            MessageBox.Show("我是类A的静态构造器");
        }
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");
        }
       
    }

(2)显示为("我是类A的静态构造器"and" 我是类A的无参构造器"and" 我是类A的无参构造器")

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 

        private void Form1_Load(object sender, EventArgs e)
        {
            A a = new A();
            A a1 = new A();
        }
    }
    class A
    {
        public static int i = 100;
        static A()
        {
            MessageBox.Show("我是类A的静态构造器");
        }
        public A()
        {
            MessageBox.Show(" 我是类A的无参构造器");
        }
       
    }

你可能感兴趣的:(类)