0

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

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

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

  3. 认为

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

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

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

4

3 回答 3

5
  1. 将方法标记为虚拟可以为继承类提供覆盖相应方法的选项。但是从接口继承时,实现不是可选的,而是强制性的。根据定义,每个接口方法都是抽象的。

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

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

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

于 2013-04-19T10:46:05.083 回答
2
  1. 接口不需要那个。实施可以virtual
  2. 实现不需要那个 - 没有什么可以覆盖的。
  3. 您将必须实例化 aProgram来调用Func。也没有静态接口的概念。
于 2013-04-19T10:44:13.780 回答
-1

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

于 2013-04-19T14:49:44.690 回答