接口访问基类还是访问派生类?

haohaojiejie2 2013-01-23 04:02:32
接口有一个方法Fun(),基类继承了它,并声明成虚拟的方法,派生类继承的是基类,override了Fun方法,那么接口访问的是谁的方法啊?
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChargeForward 2013-01-24
  • 打赏
  • 举报
回复
引用 8 楼 whowhen21 的回复:
C# code?12345678910111213141516171819interface IMyClass{ void Fun();} class MyClass : IMyClass{ public virtual void Fun() { Console.WriteLine("实现类MyClass"); }}class Sub……
正解
whowhen21 2013-01-23
  • 打赏
  • 举报
回复
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的谁
catchdream 2013-01-23
  • 打赏
  • 举报
回复
这个取决是你的接口实现的类。看看 GetType()返回的具体类型,返回基类就是用基类的方法,返回继承类就是继承类的。
夜色镇歌 2013-01-23
  • 打赏
  • 举报
回复
当然是实现的方法。。
zhujiazhi 2013-01-23
  • 打赏
  • 举报
回复
派生类继承的是基类,override了Fun方法 是这个派生类的
haohaojiejie2 2013-01-23
  • 打赏
  • 举报
回复
是多态的,你能再详细点吗?
haohaojiejie2 2013-01-23
  • 打赏
  • 举报
回复
是多态的,你能再详细点吗?
haohaojiejie2 2013-01-23
  • 打赏
  • 举报
回复
是多态的,你能再详细点吗?
bdmh 2013-01-23
  • 打赏
  • 举报
回复
看你接口是有哪个类创建的了,多态

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧