我对接口有几个问题。
为什么我们不能将virtual关键字用于Interfaces成员
为什么我们不能在接口
假设
interface Iface
{
void Func();
}
class Program : Iface
{
static void Main(string[] args)
{
}
public void Func()
{
Console.WriteLine("In func");
}
}
为什么我需要在接口的派生类中使用public成员函数,即在Func()定义中?如果我不使用public关键字,则会导致编译时错误
我们可以在界面中使用静态成员吗?
答案 0 :(得分:5)
标记方法 virtual 为继承类提供了覆盖相应方法的选项。但是当从接口继承时,实现不是可选的,而是强制的。根据定义,每个接口方法都是 abstract 。
您覆盖方法,实施它们。接口方法没有自己的实现,覆盖没有任何内容。这没有任何意义。
Why a C# interface method implemented in a class must be public
答案 1 :(得分:2)
virtual
。Program
才能调用Func
。此外,没有静态接口的概念。答案 2 :(得分:-1)
接口不像类一样,因为我们不能创建接口的对象,如果我们可以使接口的对象实现多重继承,那么我们就可以面对在多重继承类的情况下发生的钻石问题。