输出结果abstract class BaseClass { public virtual bool MethodA() { return true; } public virtual string MethodB() { return "0"; } } class Class1:BaseClass { public override bool MethodA() { return false; } public override string MethodB() { return "1"; } } class Class2:Class1 { new public string MethodB() { return "2"; } } class MainClass { public static void Main(string[] args) { Class2 o = new Class2(); Class2 q = new Class2(); Console.WriteLine(o.MethodA()); Console.WriteLine(q.MethodB()); } }
时间: 2024-02-15 13:27:14 浏览: 61
输出结果为:false和"2"。
解释:
- Class2是从Class1继承而来的,而Class1又是从BaseClass继承而来的。
- Class2重新定义了MethodB,使用了new关键字,这意味着Class2中的MethodB将会隐藏从BaseClass和Class1继承而来的MethodB。
- 当调用o.MethodA()时,由于Class2没有重写MethodA,所以会调用从Class1继承而来的MethodA,其返回值为false。
- 当调用q.MethodB()时,由于Class2重新定义了MethodB,所以会调用Class2中的MethodB,其返回值为"2"。
阅读全文