接口的重实现
派生类可以对基类中已经定义的成员进行重载,类似的概念引入到类对接口的实现中来,叫做接口的重实现
继承了接口实现的类可以对接口进行重实现,这个借口要求是在类声明的基类表中出现过的,对接口的重实现也必须遵守首次实现接口的规则,派生的接口映射不会对接口重实现所建立的接口映射产生影响。
案例
interface IControl
{
void Paint();
}
class Control:IControl
{
void IControl.Paint()
{}
}
class MyControl:Control,IControl
{
public void Paint()
{}
}
实际上就是:Control把IControl.Paint 映射到了Control.IControl.Paint上,但这并不影响MyControl上进行重实现。在重实现中IControl.Paint被映射到了MyControl.Paint上
在接口的重实时,继承而来的公有成员声明和继承而来的接口成员的声明参与到重实现过程中。
这里强调一点,类在实现一个接口时同时隐式的实现了改接口的所有父接口,同样的,类在重现一个接口时,同时隐式继承了该接口的所有父接口
抽象类和接口
和非抽象类一样,抽象类也必须提供在基类列表中所出现的所有接口成员的实现,不同的是,抽象类允许将接口的方法映射到抽象的成员方法
案例
interface IMethods
{
void f();
}
abstract class test:IMethods
{
public abstract void f();
}
上例中,所有C的非抽象派生成员必须重载C中的抽象方法来提供接口实现
注意,显示接口执行体不能是抽象的,但它允许调用抽象方法