java中,重构、重载、重写
大家好,我是威5,更多精彩关注wx公众号:
以下是本文正式内容,供参考:
1、什么叫重构?
答:重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性,系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理。通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力。
重写:也叫覆盖,当一个子类继承一父类,而子类中的方法与父类中的方法的名称、参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。(相对于继承)
例子:
public class A{//定义类A public void s(){//定义方法s } } public class B extends A{//定义子类B,继承A public void s(){//重写父类A的方法s } }
重载:同一个类中,多个方法名一样,参数列表不一样的情况就是方法的重载。
方法重载例子:
public class Test { public static void main(String[] args){ Test ts = new Test() ; System.out.println(ts.ss("s1","s2")) ; System.out.println(ts.ss("s1")) ; } public String ss(String s1,String s2){ return s1+s2 ; } public String ss(String s1){ return s1 ; } }
重写与重载的区别:
1.重写必须继承,重载不用。
2.重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。
3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常。
总结:
重写:是对方法本身重新编写。
重载:函数名相同 参数个数不同。
重构:重写算是重构的一部分,但重构还包括对程序结构的优化。
一、举个简单的例子(修墙):
一般来说有以下两种方案:
方案一:直接推到,新买砖,重新砌墙,通常会遇到难以找到适合砌墙边的砖头,砌墙工通常会破坏新砖来到达目的。
方案二:拆墙,把墙砖一个个分解,重新利用,再加上新买少量砖,完美解决难以对齐的问题,而不用去破坏新砖。
二、那么重构可以有两种方法论:
(1)全部推翻,从头开始,类似于重写(属于重构的一种方式)。
(2)以迭代的方式进行重构,类似于重构中的结构优化(属于重构的另一种方式)。
三、分解并重组
1、需要分解的情况:
(1)冗长的代码;(2)重复的代码;(3)逻辑不清晰的代码;(4)不遵循通用编程规范的代码。
2、方法:
(1)局部变量和参数;(2)变量易名:提高代码的清晰度;(3)去除临时变量;
(4)使用多态取代多分支条件逻辑;(5)继承的使用;(6)pattern的运用;
3、提炼方法和类:
(1)业务需求经常变更的地方;(2)业务功能的清晰划分;
4、重构策略
测试 -> 小修改 -> 测试 -> 小修改...
总结:重构是以微小的步伐来修改程序的。
5、Java代码重构的一大方向:完成面向过程到面向对象的转换。
参考:https://blog.csdn.net/tscyds/article/details/51228970