为什么接口的行为不像类

本文关键字:接口 为什么 | 更新日期: 2023-09-27 18:09:55

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

  1. 为什么不能在接口成员中使用虚关键字

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

  3. 假设

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

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

  4. 可以在接口中使用静态成员吗?

为什么接口的行为不像类

  1. 将方法标记为虚拟使继承类可以选择覆盖相应的方法。但是,当从接口继承时,实现不是可选的,而是强制性的。每个接口方法都是抽象的

  2. 你不重写方法,你实现它们。接口方法没有自己的实现,没有什么可以覆盖。这没有任何意义。

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

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

  1. 接口不需要这个。实现可以是virtual
  2. 实现不需要这个——没有什么可以重写的。
  3. 你必须实例化一个Program来调用Func。也没有静态接口的概念。

接口不像类,因为我们不能创建接口对象,如果我们可以创建接口对象来实现多重继承,那么我们就可以面对类多重继承时出现的菱形问题。