c#中,这段代码输出结果我1和0,那么为什么呢,底下这个public b没有用吗?里边的=-1没用 10
c#中,这段代码输出结果我1和0,那么为什么呢,底下这个publicb没有用吗?里边的=-1没用啊,还有publica里的print是空的为什么还写他...
c#中,这段代码输出结果我1和0,那么为什么呢,底下这个public b没有用吗?里边的=-1没用啊,还有public a里的print是空的为什么还写他
展开
展开全部
对“在往上爬的曹森”老师的第二个问题作些更正:
"只有创建对象的时候才会使用构造函数。这题是在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
原理是会先调用父类的构造函数,再调用自己的
"只有创建对象的时候才会使用构造函数。这题是在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();
执行的顺序是:
先执行父类的构造函数,即Print()
再执行y=-1,所以没有效果
若如上述
c.Print(); //如果加上这句,也会输出x=1,y=-1
展开全部
A类里Print()前面有个virtual,说明这个print是个虚方法,在A类的子类B类里就可以重写(override)。为什么要写它呢,这题目可能是想告诉你两个类中有相同的方法名时,要实现多态吧。。
第二个问题,public B(){}是个构造函数,只有创建对象的时候才会使用构造函数。这题是在B类里,并没创造对象,所以y=-1没用。
第二个问题,public B(){}是个构造函数,只有创建对象的时候才会使用构造函数。这题是在B类里,并没创造对象,所以y=-1没用。
更多追问追答
追问
也就是应该用B XXX=new B这样的才会调用他是吗
追答
0 0。我忘了顶上面还有个主函数,下面这个人帮我纠正了,你看他的吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询