C#三重继承的有关问题
C#三重继承的问题
定义一个抽象类
abstract class A1
{
protected abstract void method();
}
实现这个抽象类:
class A2:A1
{
protected override void method()
{
}
}
再修改A2的方法:
class A3:A2
{
//这里已经不能再override或什么了
protected void method()
{
}
}
然后 A a2 = new A2();
A a3 = new A3();
a3.method()调用的是A2的method,没有调用自己的method.
请教问题出在什么地方?
------解决方案--------------------
定义一个抽象类
abstract class A1
{
protected abstract void method();
}
实现这个抽象类:
class A2:A1
{
protected override void method()
{
}
}
再修改A2的方法:
class A3:A2
{
//这里已经不能再override或什么了
protected void method()
{
}
}
然后 A a2 = new A2();
A a3 = new A3();
a3.method()调用的是A2的method,没有调用自己的method.
请教问题出在什么地方?
------解决方案--------------------
- C# code
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { abstract class A1 { public abstract void method(); } class A2 : A1 { public override void method() { Console.WriteLine("a2"); } } class A3 : A2 { //这里已经不能再override或什么了 public override void method() { Console.WriteLine("a3"); } } class Program { static void Main(string[] args) { A1 a2 = new A2(); a2.method(); A1 a3 = new A3(); a3.method(); } } }
------解决方案--------------------
怎么可能呢,只是vs没提示让你重载而已,因为父类已经实现了