c#中,这段代码输出结果我1和0,那么为什么呢,底下这个public b没有用吗?里边的=-1没用 10

c#中,这段代码输出结果我1和0,那么为什么呢,底下这个publicb没有用吗?里边的=-1没用啊,还有publica里的print是空的为什么还写他... c#中,这段代码输出结果我1和0,那么为什么呢,底下这个public b没有用吗?里边的=-1没用啊,还有public a里的print是空的为什么还写他 展开
 我来答
simpsons心
2015-02-10 · TA获得超过243个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:64.3万
展开全部
对“在往上爬的曹森”老师的第二个问题作些更正:

"只有创建对象的时候才会使用构造函数。这题是在B类里,并没创造对象,所以y=-1没用。"

B b=new B();其实已经执行了y=-1;

如果需要真正的想输出x=1,y=-1;
则再调用b.Print()就可以

还有一点补充
A a = new A();
B b = new B();
A c = new B();
c.Print(); //如果加上这句,也会输出x=1,y=-1

原理是会先调用父类的构造函数,再调用自己的
追问
已经执行了y=-1,为什么结果却不是这样呢,这里我纠结了好久了
追答

B b = new B();//是已经执行了y=-1 然后却没有执行print();如果此时再加上一句b.Print(),就会输出

x=1,y=-1




而A c = new B();

执行的顺序是:

  1. 先执行父类的构造函数,即Print()
             

  2. 再执行y=-1,所以没有效果

  3. 若如上述

    c.Print();   //如果加上这句,也会输出x=1,y=-1

在往上爬的曹森
2015-02-10 · TA获得超过973个赞
知道小有建树答主
回答量:1156
采纳率:0%
帮助的人:864万
展开全部
A类里Print()前面有个virtual,说明这个print是个虚方法,在A类的子类B类里就可以重写(override)。为什么要写它呢,这题目可能是想告诉你两个类中有相同的方法名时,要实现多态吧。。

第二个问题,public B(){}是个构造函数,只有创建对象的时候才会使用构造函数。这题是在B类里,并没创造对象,所以y=-1没用。
更多追问追答
追问
也就是应该用B  XXX=new B这样的才会调用他是吗
追答
0 0。我忘了顶上面还有个主函数,下面这个人帮我纠正了,你看他的吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式