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

时间:2018-02-01 14:23:18

标签: c# .net

看看这段代码。

 public abstract class Customer
 {
    public abstract void Print();
 }

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

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

现在看看这段代码。

 public interface ICustomer
 {
    void Print();
 }

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

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

1 个答案:

答案 0 :(得分:2)

对于界面,没有什么可以覆盖。目前还没有实施。 CLR不必走类层次结构来找到具有适当实现的类,只有一个。

对于抽象方法,已经有一个实现(或类中的定义),并且必须覆盖该实现。这就是语言的定义方式。