c#入门-接口显式实现

接口显式实现

接口的显式实现主要解决两个问题

  1. 基类型隐式实现了一个接口成员。但是他的成员没有标记虚拟的,无法重写。
  2. 接口可以多继承,那么重名了怎么办

显式继承语法

interface I回血
{
	public void 回血();
}

显式继承时,不能写访问修饰符。因为这是接口的成员,不是你的成员。
在写成员名字时,写全是哪个接口,然后点出来成员名字。

class 猫里奥 : I回血
{
	public int Hp;

	void I回血.回血()
	{
		Hp++;
	}
}

显式实现的方法不是你的成员,你不能调用他们。
c#入门-接口显式实现_第1张图片
但是你可以把自己转为接口类型,通过接口变量调用。

class 猫里奥 : I回血
{
	public int Hp;

	void I回血.回血()
	{
		Hp++;
	}
	public void 睡觉()
	{
		((I回血)this).回血();
	}
}

实现接口的基接口成员

在接口继承时只是要求你同时实现基接口。而不是获得了基接口的成员。
所以类显式实现时指定的是基接口的名字。

interface I回魔
{
	public void 回魔();
}
interface I睡觉 : I回血, I回魔
{
}
class 探险王 : I睡觉
{
	public int Hp;
	public int MaxHp;
	public int Mp;
	public int MaxMp;
	void I回血.回血()
	{
		Hp = MaxHp;
	}
	void I回魔.回魔()
	{
		Mp = MaxMp;
	}
}

接口直接实现基接口

显式实现可以直接在接口中,实现基接口成员

interface I睡觉 : I回血, I回魔
{
	void I回魔.回魔()
	{
		Console.WriteLine("你没有法力值");
	}
}

你可能感兴趣的:(#,面向对象,c#)