.net 类继承运行内部机制分析

c# 做了一个小demo,分析一下父子类的运行机制,感觉很有意思,做个备忘。

代码如下:

    class  A
    {
        public A()
        {
            PrintFields();
        }
        public virtual void PrintFields() { }
    }

    class B : A
    {
        int x = 1;
        int y;
        public B()
        {
            y = -1;
        }

        public override void PrintFields()
        {
            Console.WriteLine("x={0},y={1}", x, y);
        }
    }

那么,当实例化B这个类的时候,会出现什么情况呢?正确答案是输出:

x=1,y=0

实例化B的时候,先对私有字段进行了初始化,然后进入父类的构造函数,由于子类B重写了父类A的方法,所以执行了B类中的重写方法,最后才开始进入B类自己的构造方法中。

调试过程如下图所示,全程F11逐步进行演示:

(完)

posted @ 2020-12-19 15:27  lishidefengchen  阅读(74)  评论(0)    收藏  举报