[.NET(C#)]写出程序的输出结果,大侠们帮帮忙啊

publicabstractclassA{publicA(){Console.WriteLine('A');}publicvirtualvoidFun(){Console... public abstract class A
{
public A()
{
Console.WriteLine( 'A' );
}
public virtual void Fun()
{
Console.WriteLine( "A.Fun()" );
}
}
public class B : A
{
public B()
{
Console.WriteLine( 'B' );
}
public new void Fun()
{
Console.WriteLine( "B.Fun()" );
}
public static void Main()
{
A a = new B();

a.Fun();
}
}

答案:
A
B
A.Fun()

我想知道答案的具体过程是怎样的?
为什么会先输出A后输出B 最后输出A.Fun()
展开
 我来答
天堂过客0010
2011-10-19 · TA获得超过277个赞
知道答主
回答量:158
采纳率:0%
帮助的人:112万
展开全部
在类实例化时,程序会自动执行类的默认构造函数,因为B继承A,所以先执行类A的默认构造函数,然后是B。用父类实例化子类(A a=new B()),对于(a.Fun)来说,是调用的父类中的Fun函数,如果用(B a=new B()),a.Fun就会调用类B中的Fun函数,输出结果会是B.Fun。希望对你有帮助。
小胆大侠
2011-10-19 · 超过18用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:61.5万
展开全部
构造B的实例时调用构造函数,先调 用基类A的构造函数,所以会先输出A
其次再输出B
尽管实例是B的实例 ,但他赋值给A类型后,通过基类A调用,调用的当然是A的方法,如果不是new 而是overrides的话,就会是B.Fun()!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式