关于c#:为什么override关键字用于实现抽象类的抽象方法而不是实现接口成员?

Why override keyword is used to implement abstract method of an abstract class but not to implement interface members?

看看这个代码。

1
2
3
4
5
6
7
8
9
10
11
12
 public abstract class Customer
 {
    public abstract void Print();
 }

class Program : Customer
{
    public override void Print()
    {
        Console.WriteLine("Print Method");
    }
}

当我们实现抽象类的抽象方法时,我们使用如上所示的override关键字。

现在看看这个代码。

1
2
3
4
5
6
7
8
9
10
11
12
 public interface ICustomer
 {
    void Print();
 }

class Program : ICustomer
{
    public void Print()
    {
        Console.WriteLine("Print Method");
    }
}

当我们实现接口的方法时,我们不使用override关键字。为什么?


对于接口,没有可重写的内容。还没有实现。clr不需要遍历类层次结构来查找具有适当实现的类,只有一个实现。

对于抽象方法,已经存在一个实现(或类中的定义),并且必须重写该实现。语言就是这样定义的。