重载基本概念
Java中存在着方法名相同但参数类型与参数个数及返回值类型相同的情况,相同情况在C语言中将被报错,但在Java中这是一种特殊的命名与使用方式——方法重载。有了重载的存在,在命名方法时解决了方法功能相同但还需重想方法名称的难题,十分实用。
使用方法与实验
当某个方法由于使用场景不同导致需要参数不同乃至返回值类型不同,或父类中定义好的方法不足以满足实际使用时,就需要进行重载。
这是父类,其中存在minus方法,返回类型int,参数一个,int类型:
public class Father {
public int num1;
public Father(int num1, int num2) {
int res = num1 + num2;
System.out.println(res);
}
public Father() {
}
public void setNum1 (int num) {
this.num1 = num;
}
protected int minus(int num2) {
return this.num1 - num2;
}
}
这是子类,继承Father类,其中存在minus方法,参数两个皆为int类型:
public class Son extends Father{
public int minus(int num1, int num2) {
return num1 - num2;
}
}
在Demo中对minus方法调用与输出结果,只能调用出双参minus方法:
public class Test {
public static void main(String[] args) {
Son son = new Son();
int res = 0;
res = son.minus(3, 2);
System.out.println(res);
}
}
1
综上,当子类中存在与父类中方法名相同方法时,若调用该名称方法,使用的将是新定义的双参minus方法,而非Father中方法,即发生重载。同理在abstract,抽象类中一样可以发生方法重载,且结果相同。
tip:当方法名称相同,参数类型与个数相同但返回值类型不同时,不可以重载,JVM会报错,务必注意!
补充:最近在看笔试题,有一道是说 “请说明,方法重载和方法重写的区别和意义”,这里说一下:
1.重载是对于同一类而言,即在一个类中可以出现和类中方法名字,返回值一致的方法;
2.重写是子类对父类而言,可以出现方法名称、参数、返回值类型完全一样的方法。