C# 为什么不';t接口的行为类似于类?

C# 为什么不';t接口的行为类似于类?,c#,oop,c#-4.0,interface,c#-3.0,C#,Oop,C# 4.0,Interface,C# 3.0,我有几个关于接口的问题 为什么我们不能对接口成员使用virtual关键字 为什么不能在接口的派生类中使用override关键字 假设 interface Iface { void Func(); } class Program : Iface { static void Main(string[] args) { } public void Func() { Console.WriteLine("In func"); }

我有几个关于接口的问题

  • 为什么我们不能对接口成员使用virtual关键字

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

  • 假设

    interface Iface
    {
        void Func();
    }
    class Program : Iface
    {
        static void Main(string[] args)
        {
    
        }
        public void Func()
        {
            Console.WriteLine("In func");
        }
    }
    
    为什么我需要在接口的派生类中,即在Func()定义中,对成员函数使用public?如果我没有使用public关键字,它将导致编译时错误

  • 我们可以在接口中使用静态成员吗

  • 接口不需要这样。实现可以是
    虚拟的
  • 一个实现不需要这样做——没有什么可以覆盖的
  • 您必须实例化一个
    程序
    才能调用
    Func
    。也没有静态接口的概念
  • 接口不需要这样。实现可以是
    虚拟的
  • 一个实现不需要这样做——没有什么可以覆盖的
  • 您必须实例化一个
    程序
    才能调用
    Func
    。也没有静态接口的概念
  • 将方法标记为虚拟将为继承类提供重写相应方法的选项。但是从接口继承时,实现不是可选的,而是强制性的。每个接口方法都是抽象的

  • 你不重写这些方法,而是实现它们。接口方法没有自己的实现,没有任何可重写的内容。这毫无意义

  • 将方法标记为虚拟将为继承类提供重写相应方法的选项。但是从接口继承时,实现不是可选的,而是强制性的。每个接口方法都是抽象的

  • 你不重写这些方法,而是实现它们。接口方法没有自己的实现,没有任何可重写的内容。这毫无意义


  • 接口的行为不像类,因为我们不能创建接口的对象如果我们可以创建接口的对象来实现多重继承,那么我们可能会面临在类多重继承的情况下出现的菱形问题。

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

    我已修复了OP问题中不可靠的编号列表-请重新考虑您自己的编号以匹配。=)我已经修复了OP问题中不可靠的编号列表-请重新考虑您自己的编号以匹配。=)