C#编程:Override与New关键字详解及示例
5星 · 超过95%的资源 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关键字对于管理类的继承关系和确保代码的预期行为至关重要。通过清晰地声明方法的意图,可以避免意外的隐藏或重写,从而提高代码的可读性和维护性。
2011-12-24 上传
2010-05-23 上传
2023-05-21 上传
2023-05-24 上传
2023-05-27 上传
2023-04-30 上传
2023-09-24 上传
2023-03-16 上传
2023-09-14 上传
weixin_38598703
- 粉丝: 2
- 资源: 905
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜