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 obj = new B();
obj.PrintFields();
后输出结果是什么?并解释下程序执行的大致流程?
{
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 obj = new B();
obj.PrintFields();
后输出结果是什么?并解释下程序执行的大致流程?
之后进入B的构造代码
obj.PrintFields();直接执行B的PrintFields
先输出1, 0后输出1,-1实例化B时,先初始化B的全局变量(此时X值=1,Y没有默认值=0),再次实例化父类也就是 AA的构造函数里执行PrintFields();而PrintFields(); 被重写 则执行了B的,PrintFields()函数
此时输出1, 0,
再初始化 B的构造函数,将Y赋值-1
到此实例化结束,执行了obj.PrintFields();
输出1,-1楼主,请给分!