Java方法重载 VS 方法重写

版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ https://blog.csdn.net/lijing742180/article/details/90049341

方法重载 和 方法重写 的区别是什么?
这是 Java 面试题中经常会考到的,也是比较容易混淆的。

方法重载

1、什么是方法重载?

在同一个类中,包含两个或者两个以上同名的方法,但是参数不同,则称为方法的重载。

其中,参数不同包括:

  • 参数的个数不同
  • 参数的类型不同
  • 参数的顺序不同
  • 跟方法的修饰符、返回值无关

下面看一下不同的重载方式:


	public void show(){
        // 无参方法
        System.out.println("welcome");
    }

    public void show(String name){
        // 重载 show 方法,一个字符串参数
        System.out.println("welcome: " + name);
    }

    public void show(String name, int age){
        // 重载 show 方法,两个参数
        System.out.println("welcome1: " + name);
        System.out.println("age1: " + age);
    }

    public void show(int age, String name){
        // 重载 show 方法,两个参数顺序不同
        System.out.println("welcome2: " + name);
        System.out.println("age2: " + age);
    }

2、如何调用重载方法?

当调用重载方法时,Java 会根据参数的个数和和类型来判断应该调用哪一个重载方法,只有参数完全匹配的方法才被执行。


public static void main(String[] args){
        People p = new People();
        p.show();
        p.show("rose");
        p.show("rose", 18);
        p.show(22, "jack");
    }

运行结果:
welcome
welcome: rose
welcome1: rose
age1: 18
welcome2: jack
age2: 22

方法重写

1、什么是方法重写?

在子类继承父类时,子类的方法和父类的方法相同,只是方法体不同,这时子类的方法将父类的方法覆盖,称为方法重写。

其中,方法相同指的是:

  • 方法名相同
  • 返回值类型相同
  • 参数类型和个数相同
  • 访问修饰限制符相同

2、如何调用重写的方法?

在子类中重写父类方法后,在子类中调用该方法时,会调用重写后的方法,而不再调用原父类方法。

若还想要调用父类的方法,可以通过 super 关键字来调用。


public class Girls extends People{
    @Override
    public void show() {
    // 重写父类方法
        super.show();  // 调用父类方法
        System.out.println("warm welcome! girls"); 
    }
}

重载 VS 重写

重载(overload):

  • 发生在同一个类中的多个同名方法中
  • 参数的数据类型或者参数的个数、顺序不同
  • 目的:节省类中的命名资源,提高代码的可读性。

重写(override):

  • 发生在有继承关系的父类和子类中
  • 父子类中有相同的方法,唯一不同就是方法体
  • 一般是父类的该方法满足不了子类的需求,子类对父类的方法进行重写。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/90049341