接口有一个方法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的谁
------解决方案--------------------------------------------------------
正解