C#中的接口
2、私有方法不能实现接口方法
如果想将接口方法直接实现为私有方法是办不到的。下面的EditBox的代码中Paint方法没有特殊说明,默认为private,导致代码无法执行:
using System ;
interface IControl
{
void Paint();
}
public class EditBox: IControl
{
void Paint()
{
Console.WriteLine("Pain method is called!");
}
public void ShowPaint()
{
this.Paint();
((IControl)this).Paint();
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.ShowPaint();
}
}
程序在编译时将显示如下编译错误:““EditBox”不会实现接口成员“IControl.Paint()”。“EditBox.Paint()”或者是静态、非公共的,或者有错误的返回类型。”
为什么会这样呢?如图:

这是由于接口规范中的方法默认的访问权限是public,而类中的默认访问权限是default,也就是说private,因此导致权限范围收缩,两者权限并不相同,所以必须将类的权限调整为public才可以使上面的代码得以执行。