`

覆盖(重写),重构,重载的区别 .

阅读更多

论坛中常常看到有人问这样的问题,因此总结一下:

 

首先这三个概念描述得范围是不同的:

重构, 是对软计设计方法的描述, 这个层面是架构和设计方法,

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),

这个过程就叫做重载.

分享到:
评论

相关推荐

    重载、重写、重构.md

    #### 重写的区别于覆盖(new): - **重写(Override)**:使用`override`关键字重写父类的方法时,子类的方法会替代父类的方法,即当通过父类引用调用子类对象时,会执行子类中重写的方法。 - **覆盖(New)**:使用`new...

    java基础课程重点笔记.rar

    1.重写和重构的区别 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同...

    C++ 类特性 多态性,继承,派生,重构 等

    - **静态多态(Compile-Time Polymorphism)**:也称为函数重载或运算符重载,是指在同一个作用域内,可以定义多个同名但参数列表不同的函数或运算符。编译器根据调用时的参数类型和数量来确定调用哪个函数。 - **...

    java中的继承(子类调用父类构造方法还不懂).doc

    1. 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;重写方法不能使用比被重写方法更严格的访问权限。重写是类与类之间的关系,两者必须是继承关系。 2. 关键字 `...

    java多态性.pdf

    重写是指子类对父类方法的重构,重载是指方法名称相同但是参数列表不同的方法,动态连接是指在编译时不知道具体的方法实现,直到运行时才知道。 要理解多态性,首先要知道什么是“向上转型”。向上转型是指使用父类...

    SpringBoot 31道面试题和答案.docx

    4. **重构友好**:Java 代码更容易进行重构操作。 SpringBoot 的开发工具(DevTools)提供了实时重载功能,当代码发生改变时,嵌入式 Tomcat 会自动重启,大大提升了开发效率。此外,DevTools 还包含了 H2 数据库...

    升级版,重学C++ ,重构你的C++知识体系

    #### 七、重写与重载的区别 - **重载(Overloading)**:在同一个类中,多个函数可以具有相同的名字但不同的参数列表。这使得可以根据不同的参数类型或数量调用不同的实现。 - **重写(Overriding)**:发生在子类与...

    设计模式V2.0.doc

    方法重写发生在子类覆盖父类的特定方法时,通常是为了在子类中提供不同的实现。重写需要在子类方法上使用`@Override`注解以明确表示这一行为。 最后,重构是改进代码结构的过程,不改变其外在行为。重载是创建多个...

    thinkinginjava笔记.pdf

    - **基类与派生类**:基类(父类)定义了一组通用特征,派生类(子类)继承基类并可以添加自己的特有特性或重写基类的方法。 2. **泛型**: - 泛型是Java SE 5引入的新特性,允许在类、接口和方法中使用类型参数...

    Carnegie教程-ssd3(面向对象编程与设计)

    4. 方法重载与重写:不同方法签名的同名方法,以及子类对父类方法的覆盖。 5. 继承与多态的实现,包括单一继承、多重继承以及接口。 6. 封装的最佳实践,如使用getter和setter方法,以及访问器和修改器。 7. 抽象类...

    我的理论常识.doc

    **重构、重写、重载**是优化代码的重要手段。重构是对代码结构的改进,不改变其外在行为;重写(Override)是子类对父类方法的重新实现;重载(Overload)则是相同名称但参数不同的方法。 **事件和委托**是.NET中...

    桂林理工大学java程序设计期末试卷

    比较方法重写与方法重载,构造方法可以重载吗?** - **方法重载(Overloading)**: 在同一类中可以有多个同名的方法,但这些方法的参数列表必须不同(包括参数的数量或者类型)。方法重载主要用于提高代码的可读性...

    SpringBoot 38道面试题和答案.docx

    4. **重构友好**:JavaConfig 代码更容易进行重构和维护。 SpringBoot 的 DevTools(开发者工具)模块是开发阶段的利器,它包含了一个实时重载功能,当检测到代码变更时,会自动重启内嵌的 Tomcat 服务器,从而快速...

    ajax-proxy:拦截es6代理重构XMLHTTPRequest的Ajax代理

    中文简体| ajax代理 简介 ajax-proxy是一个用ES6中代理特性实现的用于代理原生对象XMLHttpRequest的库,它可以使您从对XMLHttpRequest进行操作。 使用 安装 CDN约会 < script >... ajax-proxy使用起来十分简单,...

    面向对象软件构造object-oriented software construction

    多态性有静态多态(编译时多态)和动态多态(运行时多态)两种形式,如方法重载和方法重写。 4. 类与对象:类是创建对象的模板,定义了对象的数据成员(属性)和成员函数(方法)。对象是类的实例,每个对象都有其...

    道法自然 面向对象实践指南4-4

    - 方法重载与重写:方法重载允许在同一个类中定义多个同名方法,但参数列表不同;重写则是子类对父类方法的具体实现进行覆盖。 - 组合与聚合:组合是“has-a”关系,一个对象包含另一个对象;聚合是更松散的关联,一...

    visual basic.net 面向对象可重用组件开发

    VB.NET支持方法重写(Override)和方法重载(Overload)。 二、VB.NET组件开发 1. 用户控件:用户控件是可重用的自定义UI元素,可以组合多个基本控件并添加自定义逻辑。在VB.NET中,通过创建UserControl类来实现。 ...

    SpringBoot 35道面试题和答案.docx

    Spring JavaConfig 是一种纯 Java 的方式来配置 Spring IoC 容器,它提供了面向对象的配置,允许配置类继承、重写 `@Bean` 方法,从而减少了对 XML 配置的依赖。JavaConfig 的优势在于其类型安全性和重构友好,利用 ...

Global site tag (gtag.js) - Google Analytics