一道面试题目~~~有答案但不知道为什么?高手门告诉下
在下面的例子里
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;x= 1 y = -1
为什么会打印出4个啊~~~~把程序运行的顺序告诉我下,讲的详细点.谢谢大家了
------解决方案--------------------new B()运行过程如下:
先调用父类的构造函数,接着调用B中的PrintFields();(因为原型是B类型)
接着调用B构造函数,接着调用PrintFields();