@[toc]
方法的重载(overload)
关于方法:
- 方法的重载
- 可变形参的方法
- 方法参数的值传递机制(重点)
- 递归方法
基础理解
重载的概念:在同一个类中,允许存在一个以上的==同名方法==,只要它们的参数个数或者参数类型不同即可。
ps:两同一不同:
相同:同一个类、同一个方法名
不同:参数列表不同、参数个数不同、参数类型不同
判断是否是重载?跟方法的权限修饰符、返回值类型、形参变量名、方法体等等都没有关系>
重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
举例代码:
package java1;
//方法的重载
public class OverLoad {
public static void main(String[] args) {
OverLoad overLoad= new OverLoad();
overLoad.getSum(1,2);
}
//如下的4个方法构成了重载
public void getSum(int a,int b){
System.out.println("1");
}
public void getSum(double a,double b){
System.out.println("2");
}
public void getSum(int a,String b){
System.out.println("3");
}
public void getSum(String b,int a){
System.out.println("4");
}
}
方法重载时的自动类型提示举例
(针对上面的代码)
==注解:运行结果为1,调用了第一个方法,当把第一个方法注释的时候,运行结果不会报错,输出“2”,调用的是第二个方法,这是自动类型的提升,当找不到int型的方法,会找符合自动类型提升后的方法,但是如果第一个和第二个方法都注释之后,便会报错说找不到合适的方法。==
- 在通过对象调用方法时(有很多重载),如何确定某一个指定的方法:先看方法名再看参数列表
例题(理解级,很简单)
例题1:
编写程序,定义三个重载方法并调用。方法名为mOL。
- 三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别 执行平方运算并输出结果,相乘并输出结果,输出字符串信息。
- 在主类的main ()方法中分别用参数区别调用三个方法。
答案代码:
package java1;
public class LXT1 {
public static void main(String[] args) {
LXT1 lxt1 = new LXT1();
lxt1.mOL(5);
lxt1.mOL(5,6);
lxt1.mOL("abc");
}
public void mOL(int a){
System.out.println(a*a);
}
public void mOL(int a,int b){
System.out.println(a*b);
}
public void mOL(String a){
System.out.println(a);
}
}
例题2:
定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方 法求两个double值中的最大值,第三个方法求三个double值中的最大值, 并分别调用三个方法。
答案代码:
package java1;
public class LXT2 {
public static void main(String[] args) {
LXT2 lxt2 = new LXT2();
double a=lxt2.max(4.4,6,9);
System.out.println(a);
}
public int max(int a,int b){
return (a>b)?a:b;
}
public double max(double a,double b){
return (a>b)?a:b;
}
public double max(double a,double b,double c){
double max=(a>b)?a:b;
return (max>c)?max:c;
}
}