今天突然想到以前遇到的一个问题,题目如下(可能绝大多数人都遇到过):
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)的构造函数。