在C#中,有两种机制可以通过其子类重新定义或提供父类方法的新实现,这两种机制被称为“方法重写”和“方法隐藏”。现在,基于重新实现方法的方式,我们可以区分两者。
以下是方法重写和方法隐藏之间的重要区别。
序号 | 键 | 方法覆盖 | 方法隐藏 |
---|---|---|---|
1 | 定义 | 方法重写是一种实现多态的机制,其中超类和子类具有相同的方法,包括参数和签名,并且当您使用子类对象调用它时,将调用子类中的实现。 | 另一方面,“方法隐藏”可以定义为一种技术,其中用户可以使用new关键字重新定义基类或父类的方法,从而隐藏该特定方法的基类提供的主要基本实现。 |
2 | 父级实现的访问 | 在“方法重写”中,子类可以访问父类的方法实现。 | 如果是方法隐藏,则无法通过子类引用访问父类方法的实现。 |
3 | 使用的修饰符 | 对于方法重写,使用了override关键字。 | 在方法隐藏的情况下,new关键字用于在子类中定义新的实现。 |
4 | 实现类型 | 在“方法重写”中,方法的实现类型为对象类型。 | 但是,另一方面,“方法隐藏”中的方法的实现类型是引用类型。 |
5 | 父项到子项引用 | 在“方法重写”中,当父类引用变量指向子类的对象时,它将在子类中调用被重写的方法。 | 另一方面,在“方法隐藏”中,当父类引用变量指向子类的对象时,它将调用父类中的隐藏方法。 |
6 | 用法 | 方法重写仅重新定义方法的实现。 | 方法隐藏可以完全重新定义方法。 |