首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-02-15 
接口访问基类还是访问派生类?接口有一个方法Fun(),基类继承了它,并声明成虚拟的方法,派生类继承的是基类,o

接口访问基类还是访问派生类?
接口有一个方法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……

正解

热点排行