C# 程序如何理解??

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:32:34
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);
}
}
class Hello
{
static void Main()
{
B b=new B();
}
}

结果 :x=1,y=0

不明白,请指教。
前辈们还有一个:
using System;
class A
{
public static int X=120;
static A()
{
X=B.Y+1;
}
}
class B
{
public static int Y=A.X +1;
static B(){}
static void Main()
{
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
结果:X=1,Y=2。

请指教 ,谢谢!

class A //定义一个A类
{
public A()//定义构造函数A()
{
PrintFields();//构造函数调用虚拟方法printFields()
}
public virtual void PrintFields()//定义一个虚拟方法printFields()
{
}
}
class B:A //定义一个B类,B类继承A类(因为B类继承A类,所以B类同时继承A类的所有方法及属性)
{
int x=1; //定义一个int变量并将1赋值给X
int y; //定义一个int变量Y
public B()//定义B类
{
y=-1; //将Y赋值为-1
}
public override void PrintFields() //重写printFields()函数
{
Console.WriteLine("x={0},y={1}",x,y);//输出形式是x= ,y=.
}
}
class Hello
{
static void Main()//程序入口
{
B b=new B();定义一个B类的实例(由于B类继承A类,而A类中有一个构造函数,所以构造函数也被B类继承。所以类初始化得时候调用构造 函数:即调用printFields(),而后printFields()函数被重写。所以结果为:X=1,Y=2)
}
}

希望对你有所帮助!!

基类的构造函数在B构造函数块之前被调用

这样改你看得明白一些
//A
public A()
{
Console.WriteLine("Begin A");

PrintFields();
Console.