C#编程:Override与New关键字详解及示例

5星 · 超过95%的资源 4 下载量 154 浏览量 更新于2024-08-29 收藏 100KB PDF 举报
"这篇文章主要介绍了C#编程中Override和New关键字的使用,这两个关键字用于处理类的继承关系,特别是处理基类与派生类中同名方法的行为。C#的设计使得基类和派生类之间的版本控制能够向前发展,同时保持向后兼容性。" 在C#中,派生类可以包含与基类方法同名的方法,但为了明确表示是重写基类方法还是创建新的独立方法,需要使用Override关键字和New关键字。 1. Override关键字 - `override`关键字用于重写基类中的虚方法。基类方法必须声明为`virtual`,这样才能被派生类重写。当在派生类中使用`override`关键字时,编译器会检查基类是否有相应的虚方法可供重写。如果成功,派生类对象在调用这个方法时,将执行派生类的版本,而不是基类的版本。 - 示例:假设`GraphicsClass`有一个`DrawLine`方法声明为`virtual`,派生类`YourDerivedGraphicsClass`可以使用`override`关键字来提供自己的`DrawLine`实现。 2. New关键字 - `new`关键字用于隐藏基类中具有相同名称的方法。即使基类方法不是虚拟的,派生类也可以使用`new`关键字定义同名方法。这样,通过派生类对象调用这个方法时,将执行派生类的新定义,而不是基类的原定义。但是,如果通过基类引用派生类对象,仍会调用基类的原方法。 - 示例:在上述`YourDerivedGraphicsClass`的例子中,如果没有使用`override`而是使用`new`关键字定义`DrawRectangle`,那么这个方法将隐藏基类的任何同名方法,而不会重写它。 3. 使用base关键字 - 在派生类中,可以使用`base`关键字调用基类的成员。例如,如果派生类重写了基类的某个方法,但仍需调用基类的实现,可以使用`base.MethodName()`来实现。 4. 虚方法和非虚方法 - 默认情况下,C#的方法是非虚方法,这意味着它们不能被派生类重写。只有声明为`virtual`的方法才能被继承类覆盖。 - 若要声明虚方法,需在基类方法声明中使用`virtual`关键字。派生类可以通过`override`重写这个方法,或者通过`new`隐藏它。 5. 编译器警告 - 如果派生类中的方法与基类中方法同名,但未使用`override`或`new`关键字,编译器会发出警告,表明派生类的方法将隐藏基类的方法,除非显式指定行为。 6. override、virtual和new的关键字使用 - `override`和`virtual`一起使用可以确保基类的虚方法在派生类中被正确地重写,而`new`关键字则用于创建基类中同名方法的替代版本。 - 如果既不使用`override`也不使用`new`,编译器会发出警告,并默认视为使用`new`关键字。 在实际开发中,理解并正确使用Override和New关键字对于管理类的继承关系和确保代码的预期行为至关重要。通过清晰地声明方法的意图,可以避免意外的隐藏或重写,从而提高代码的可读性和维护性。