黑马程序员技术交流社区

标题: 请求讲解C#程序执行过程,步骤和结果,谢谢! [打印本页]

作者: 许庭洲    时间: 2012-7-16 16:26
标题: 请求讲解C#程序执行过程,步骤和结果,谢谢!
本帖最后由 许庭洲 于 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();
        }
}
作者: 陈冲    时间: 2012-7-16 23:29
1.使用子类B创建对象:
   a)调用父类B的构造函数B(){};
   b)在构造函数中;未输出B之前,调用父类A的构造函数A(){},输出A;
   c)然后执行构造函数B(){}的输出语句,输出B;
2.使用子类创建的对象实例化a(向上转型)
3.调用A的Fun()函数,输出A.Fun()。
结果如下图:


作者: 邓戊庚    时间: 2012-7-16 23:56
按  F10  或者F11 逐步测试,可以清楚的看到执行过程
作者: 刘秋菊    时间: 2012-7-17 07:11
A是一个抽象类,B继承了A,程序执行步骤如下:

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







作者: 许庭洲    时间: 2012-7-17 07:59
陈冲 发表于 2012-7-16 23:29
1.使用子类B创建对象:
   a)调用父类B的构造函数B(){};
   b)在构造函数中;未输出B之前,调用父类A的构造 ...

谢谢,回答的太棒了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2