首页 新闻 会员 周边 捐助

分析一下使用抽象类的C#代码,起最终运行结果是什么?

0
悬赏园豆:200 [已关闭问题]
Code

我是越看越抽象!!不知道怎么做!只好上来问一下大家!

帮个忙谢谢哈

 

我心中尚未崩溃的地方的主页 我心中尚未崩溃的地方 | 初学一级 | 园豆:5
提问于:2009-09-01 11:00
< >
分享
其他回答(2)
0

首先,在入口哪里,你声明了一个Class2 对象objB,Class2的构造函数中有一段输出代码,所以触发console.write("2'); 

至于ABS()方法,它只是抽象方法中定义的一个方法而已。虽然用override 了,但是也只是说明你给它赋予了新的处理事件,并没有触发。

然后你调用了objB.F(),也就是继承自Class1中的 console.write("1"); 

现在结果出来了:

21

     

邢少 | 园豆:10926 (专家六级) | 2009-09-01 11:12
0

LZ贴代码也要认真点。abstract写错。Class1后不用加()。Console.Write首字大写。voidABS()没分开。class2()构造函数与类名大小写不同。

Class2 objB=new Class2();  -- 这句会调用Class2的默认函数,输出2。

objB.F(); --这句会调用基类Class1的F函数,输出1。

objB并没有调用本身的ABS()函数(没有objB.ABS())。故没有输出。

结果:21

DaCHun | 园豆:255 (菜鸟二级) | 2009-09-01 12:16
0

public abstract class Class1
    {
        public void F()
        {
            Console.WriteLine("1");
        }
        public abstract void ABS();
    }
    public class Class2 : Class1
    {
        public override void ABS()
        {
            Console.WriteLine("3");
        }
        public Class2()
        {
            Console.WriteLine("2");
        }
    }

//先执行构造函数,再执行方法,没啥可晕的吧。

  Class2 objB = new Class2();
            objB.F();
            objB.ABS();

输出:

2

1

3

winzheng | 园豆:8797 (大侠五级) | 2009-09-02 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册