读书人

接口访问基类仍是访问派生类

发布时间: 2013-02-15 15:46:56 作者: rapoo

接口访问基类还是访问派生类?
接口有一个方法Fun(),基类继承了它,并声明成虚拟的方法,派生类继承的是基类,override了Fun方法,那么接口访问的是谁的方法啊? 接口,基类,派生类
[解决办法]
看你接口是有哪个类创建的了,多态
[解决办法]
派生类继承的是基类,override了Fun方法

是这个派生类的
[解决办法]
当然是实现的方法。。
[解决办法]
这个取决是你的接口实现的类。看看 GetType()返回的具体类型,返回基类就是用基类的方法,返回继承类就是继承类的。
[解决办法]

interface IMyClass
{
void Fun();
}

class MyClass : IMyClass
{
public virtual void Fun()
{
Console.WriteLine("实现类MyClass");
}
}
class SubClass : MyClass
{
public override void Fun()
{
Console.WriteLine("继承MyClass的SubClass");
}
}


调用结果:
IMyClass mc = new MyClass();
mc.Fun();//这调用的就是MyClass的方法。输出 实现类MyClass
IMyClass mc1 = new SubClass();
mc1.Fun();//这调用的是SubClass的方法。输出 继承MyClass的SubClass
//取决于new的谁

[解决办法]
引用:
C# code?12345678910111213141516171819interface IMyClass{ void Fun();} class MyClass : IMyClass{ public virtual void Fun() { Console.WriteLine("实现类MyClass"); }}class Sub……

正解

读书人网 >C#

热点推荐