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不需要遍历类层次结构来查找具有适当实现的类,只有一个实现。
对于抽象方法,已经存在一个实现(或类中的定义),并且必须重写该实现。语言就是这样定义的。