接口显式实现
接口的显式实现主要解决两个问题
- 基类型隐式实现了一个接口成员。但是他的成员没有标记虚拟的,无法重写。
- 接口可以多继承,那么重名了怎么办
显式继承语法
interface I回血
{
public void 回血();
}
显式继承时,不能写访问修饰符。因为这是接口的成员,不是你的成员。
在写成员名字时,写全是哪个接口,然后点出来成员名字。
class 猫里奥 : I回血
{
public int Hp;
void I回血.回血()
{
Hp++;
}
}
显式实现的方法不是你的成员,你不能调用他们。
但是你可以把自己转为接口类型,通过接口变量调用。
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("你没有法力值");
}
}