今天突然想到以前遇到的一个问题,题目如下(可能绝大多数人都遇到过):
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时输出什么结果 B b = new B();
答案:x= 1, y= 0
知识点:
1.类的实例化过程。 new B(); 1、先初始化之类的字段X= 1 y= 0,接着实例化父类(A)的构造函数,然后在调用子类(B)的构造函数。
{
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时输出什么结果 B b = new B();
答案:x= 1, y= 0
知识点:
1.类的实例化过程。 new B(); 1、先初始化之类的字段X= 1 y= 0,接着实例化父类(A)的构造函数,然后在调用子类(B)的构造函数。