覆盖(重写),重构,重载的区别
2009-10-05 09:04
260 查看
论坛中常常看到有人问这样的问题,因此总结一下:
首先这三个概念描述得范围是不同的:
重构, 是对软计设计方法的描述, 这个层面是架构和设计方法,
e.g: 你今天写了一个应用, 读txt文档并显示, 几天后,用户的新需求来了, 告诉你, 我要读一个XML文本并显示, 这个时候, 你从前的代码需要做变更, 这个变更的动作, 就叫做重构;
更小一点的例子,你维护的模块有个类叫做Class_B, 别人不爽, 觉得名字不好理解, 要你更改成TXTReader, 并附上注释,
也叫做重构.
重构是一个软件维护的通用技巧, 重构的具体做法, 可以通过重写或者重载等, 但不限于此, 更改注释, 更改函数名类名等,都可以称之为重构,
重构的目的是为了让软件容易维护, 修改其Bug等.
覆盖(重写), 即override(Overwrite), 表达的都是一个含义,《Thinking in java》中用的是Override, 翻译为覆盖, (跟他们相区别的概念为OverLoad[重载])
override(Overwrite)是子类覆盖基类的方法.
父类的protect或者public方法无条件的成为子类的方法,但子类不爽, 想要将继承过来的方法改造一下。 这就是override, 方法名,
参数值,都是一模一样的。但内容体(方法中的代码)已经不同了。
重载(Overload)就是通过方法的参数识别不同的函数
比如你有一个AMethod()不带参数, 然后你用了一个另外相同名称的方法,带一个参数AMethod(String para),
这个过程就叫做重载.
首先这三个概念描述得范围是不同的:
重构, 是对软计设计方法的描述, 这个层面是架构和设计方法,
e.g: 你今天写了一个应用, 读txt文档并显示, 几天后,用户的新需求来了, 告诉你, 我要读一个XML文本并显示, 这个时候, 你从前的代码需要做变更, 这个变更的动作, 就叫做重构;
更小一点的例子,你维护的模块有个类叫做Class_B, 别人不爽, 觉得名字不好理解, 要你更改成TXTReader, 并附上注释,
也叫做重构.
重构是一个软件维护的通用技巧, 重构的具体做法, 可以通过重写或者重载等, 但不限于此, 更改注释, 更改函数名类名等,都可以称之为重构,
重构的目的是为了让软件容易维护, 修改其Bug等.
覆盖(重写), 即override(Overwrite), 表达的都是一个含义,《Thinking in java》中用的是Override, 翻译为覆盖, (跟他们相区别的概念为OverLoad[重载])
override(Overwrite)是子类覆盖基类的方法.
父类的protect或者public方法无条件的成为子类的方法,但子类不爽, 想要将继承过来的方法改造一下。 这就是override, 方法名,
参数值,都是一模一样的。但内容体(方法中的代码)已经不同了。
重载(Overload)就是通过方法的参数识别不同的函数
比如你有一个AMethod()不带参数, 然后你用了一个另外相同名称的方法,带一个参数AMethod(String para),
这个过程就叫做重载.
相关文章推荐
- Swift中 覆盖(重写),重构,重载的区别
- 重写重载,重构,加载,覆盖的区别
- 覆盖(重写),重构,重载的区别和这到底是否重载?
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- java重载/重写(覆盖)/重构比较及其与C++差异
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写(覆盖)、重载的区别
- 重写、覆盖、重载、多态几个概念的区别分析
- Java重载和重写(覆盖)的区别--源码实例
- C++中重载、重写(覆盖)的区别实例分析
- overrid,overLoading /重写 重构,覆盖,重载
- 覆盖,重写,重载,隐藏,多态的区别
- 类成员函数的重载、覆盖和隐藏(重写)的区别
- 重写、覆盖、重载、多态几个概念的区别
- java中覆盖、重写与重载的区别
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- 重构,重写(覆盖)与重载
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- C++中重载、重写(覆盖)和隐藏的区别
- C++中重载、重写(覆盖)和隐藏的区别实例分析