黑马程序员技术交流社区

标题: 关于继承的问题 [打印本页]

作者: 韩俊    时间: 2012-11-29 09:16
标题: 关于继承的问题
派生类的对象时,先执行哪个构造函数,是派生类的构造函数还是基类的构造函数?用程序来演示?
作者: 陈辉    时间: 2012-11-29 10:05
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, 下载次数: 12)

捕获.JPG

作者: 黑马-张扬    时间: 2012-11-29 11:38
先构造基类,再构造派生类
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
在执行派生类的构造函数之前执行基类,这是编译器为我们附加的。而不是在派生类的构造函数中调用基类的构造函数。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2