A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩俊 中级黑马   /  2012-11-29 09:16  /  1132 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

派生类的对象时,先执行哪个构造函数,是派生类的构造函数还是基类的构造函数?用程序来演示?

2 个回复

倒序浏览
1、先执行派生类的构造函数,在派生类的构造函数中调用其父类的构造函数
2、源码:
public class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();//在这里加一个断点,调试运行就可看出来
        }
    }

    public class Person
    {
        public Person()//在这里加一个断点
        {
        }
    }

    public class Student : Person
    {
        public Student()//在这里加一个断点
        {
        }
    }

3、验证“在派生类的构造函数中调用其父类的构造函数 ”这句话,IL反汇编程序,将上诉程序的.exe文件拖到里面(具体的分析看下图):

捕获.JPG (202.44 KB, 下载次数: 11)

捕获.JPG
回复 使用道具 举报
先构造基类,再构造派生类
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            Console.ReadKey();
        }
        public class A
        {
            public A()
            {
                Console.WriteLine("i'm A");
            }
        };
        public class B: A
        {
           public  B()
            {
                Console.WriteLine("i'm B");
            }
        };
    }
}
输出
i'm A
i'm B
在执行派生类的构造函数之前执行基类,这是编译器为我们附加的。而不是在派生类的构造函数中调用基类的构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马