为什么接口不像类一样?

Sau*_*jan 0 c# oop interface c#-3.0 c#-4.0

我有几个关于接口的问题.

  1. 为什么我们不能将virtual关键字与Interfaces成员一起使用

  2. 为什么我们不能在接口的派生类中使用override关键字

  3. 假设

    interface Iface
    {
        void Func();
    }
    class Program : Iface
    {
        static void Main(string[] args)
        {
    
        }
        public void Func()
        {
            Console.WriteLine("In func");
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    为什么我需要在接口(即Func()定义中)对派生类中的成员函数使用public?如果我不使用public关键字,则会导致编译时错误

  4. 我们可以在Interface中使用静态成员吗​​?

Den*_*aub 5

  1. 标记方法virtual为继承类提供了覆盖相应方法的选项.但是当从接口继承时,实现不是可选的,而是强制的.每个接口方法都是抽象的定义.

  2. 您不会覆盖这些方法,而是实现它们.接口方法没有自己的实现,没有什么可以覆盖.这没有任何意义.

  3. 为什么在类中实现的C#接口方法必须是公共的

  4. 不,我们不能在接口上使用静态方法