Live2D 看板娘 / Demo

面试题汇总

在下面的例子里
using System;
 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);
        }
    }
    当使用new B()创建B的实例时,产生什么输出?

  答: x=1,y=0

  分析:因为A是B的父类,创建B的时候,首先要调用A的无参构造函数,在A的无参构造函数中调用了

PrintFields() 函数,由于用到了override 重写, 所以会调用B的PrintFields(),开始在控制台输出 x=?y=? ,由于现在y=-1这句还没有运行到,所以结果会是x=1,y=0
posted @ 2016-01-27 16:33  MChuang  阅读(152)  评论(0)    收藏  举报