当前位置: 代码迷 >> C# >> 接口访问基类仍是访问派生类
  详细解决方案

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

热度:6071   发布时间:2013-02-25 00:00:00.0
接口访问基类还是访问派生类?
接口有一个方法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……

正解
  相关解决方案