关于c#中的继承的问题!

usingSystem;classA{publicA(){PrintFields();}publicvirtualvoidPrintFields(){}}classB:A... 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
=================================================================为什么y输出的是0呢?
展开
 我来答
majunbopm
2008-07-01 · TA获得超过832个赞
知道小有建树答主
回答量:1027
采纳率:0%
帮助的人:1037万
展开全部
using System;
class A
{
public A(){
PrintFields(); //运行到这里就跳到了public override void PrintFields()方法,输出其实是在这里。
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{ //程序运行到这里的时候就跳到了A的PrintFields()方法
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}

还没运行到y=-1; 就输出了。输出之后才运行y=-1;随即程序运行完毕!
yaji166
2008-07-01 · TA获得超过157个赞
知道小有建树答主
回答量:511
采纳率:0%
帮助的人:308万
展开全部
其实在实例化一个类的时候他会先调用基类的构造 你的public a()
{PrintFields();} 就先执行这个方法 而子类的构造此时还没有执行
所以y取默认值0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式