A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 许庭洲 于 2012-7-16 16:47 编辑

求C#程序执行过程,步骤和结果,谢谢!
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();
        }
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

正序浏览
陈冲 发表于 2012-7-16 23:29
1.使用子类B创建对象:
   a)调用父类B的构造函数B(){};
   b)在构造函数中;未输出B之前,调用父类A的构造 ...

谢谢,回答的太棒了!
回复 使用道具 举报
A是一个抽象类,B继承了A,程序执行步骤如下:

Main 方法执行到 A a = new B();时,执行B的构造函数,但是因为B继承了A所以要先执行A的构造函数,然后再执行B的构造函数 ,
接着用抽象类A创建的引用a(指向子类的对象b)调用A的Fun();






评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
按  F10  或者F11 逐步测试,可以清楚的看到执行过程

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1.使用子类B创建对象:
   a)调用父类B的构造函数B(){};
   b)在构造函数中;未输出B之前,调用父类A的构造函数A(){},输出A;
   c)然后执行构造函数B(){}的输出语句,输出B;
2.使用子类创建的对象实例化a(向上转型)
3.调用A的Fun()函数,输出A.Fun()。
结果如下图:

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马