java 方法的重载、重写与重构

时间:2024-02-01 17:43:32

首先我们要知道重载重写重构的区别

 

重载:指的是在同一个类中,方法名相同,但是参数数量、参数类型或者返回类型不同的方法就叫做重载。

重写:

  重写分两种、第一种的是在子类继承父类的情况下,通过@Override注解,子类方法名、参数、返回值全部一样,方法体不一样的方法就是重写。

        第二种就是接口实现,实现接口必须实现接口下的所有方法,因为实现方法上也有@Override注解,所以也算是重写的一种吧。

重构:重构就是在原有的代码上,进行优化,使代码执行速度更快、或者更简单易读。

 

重载的优点:

1、相同的方法名,传入不同的参数调用的方法就不一样。 简单来说,就是你需要调用哪个方法,就传入重载对应的参数。

  代码如下:

 1 public class Protected1 {
 2 
 3     /**
 4      *   调用重载方法
 5      * @param args
 6      */
 7     public static void main(String[] args) {
 8         test1 test = new test1();
 9         // 在这里我们可以看到,调用的方法名都是一样的,只是传入的参数类型与数量不一样
10         test.Overload();
11         System.out.println(test.Overload("重载2"));
12         test.Overload("重载2",3);
13     }
14 }
15 
16 
17 class test1{
18     
19     public test1() {
20         
21     }
22     // 在这我们可以看到,方法名称都是一样的,只是方法中参数类型与数量不一样
23     public void Overload() {
24         System.err.println("重载1");
25     }
26     
27     public String Overload(String str) {
28         return "重载2";
29     }
30     
31     public void Overload(String str,int i) {
32         System.err.println("重载3");
33     }
34 }

 

执行结果,代码复制即可运行

 

 

重写的优点

  个人观点,如果是子类继承父类然后重写父类方法,和子类写的方法没什么区别,虽然说重写后子类要使用父类方法可以通过super点父类方法名就可以调用,但是何必要那么用呢。

    但是接口就不一样了,一个实现类可以实现多个接口,增强类的重用性和复用性,扩展性;话不多说,直接看代码

public class Protected1 extends test1{

    // 这里调用父类方法,我们可以看到,不用new 直接就可以使用了
    public void test() {
        // 在这里我们可以看到,调用的方法名都是一样的,只是传入的参数类型与数量不一样
        super.Overload();  // 利用super可以调用父类方法
        Overload();// 重写方法之后调用的就是重写方法
        System.out.println(Overload("重载2"));
        Overload("重载2",3);
    }
    
    //重写之后的方法
    @Override
    public void Overload() {
        System.err.println("重写之后的方法");
    }
    
    public static void main(String[] args) {
        Protected1 p = new Protected1();
        p.test();
    }
}

class test1{
    // 在这我们可以看到,方法名称都是一样的,只是方法中参数类型与数量不一样
    public void Overload() {
        System.err.println("重载1");
    }
    
    public String Overload(String str) {
        return "重载2";
    }
    
    public void Overload(String str,int i) {
        System.err.println("重载3");
    }
    
}