首先,在入口哪里,你声明了一个Class2 对象objB,Class2的构造函数中有一段输出代码,所以触发console.write("2');
至于ABS()方法,它只是抽象方法中定义的一个方法而已。虽然用override 了,但是也只是说明你给它赋予了新的处理事件,并没有触发。
然后你调用了objB.F(),也就是继承自Class1中的 console.write("1");
现在结果出来了:
21
LZ贴代码也要认真点。abstract写错。Class1后不用加()。Console.Write首字大写。voidABS()没分开。class2()构造函数与类名大小写不同。
Class2 objB=new Class2(); -- 这句会调用Class2的默认函数,输出2。
objB.F(); --这句会调用基类Class1的F函数,输出1。
objB并没有调用本身的ABS()函数(没有objB.ABS())。故没有输出。
结果:21
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