方法重载(OverLoad)
基本介绍
假如没有方法重载的话, 就会出现printchar printint的打印方式 ,根据类型进行都要打印
重载的好处
1)减轻了起名的麻烦 2)减轻了记名的麻烦
方法重载快速入门
OverLoad01.java
案例:类:MyCalculator方法:calculate
calculate(int n1,int n2) //两个整数的和
calculate(int n1,double n2) //一个整数和一个double的和
calculate(double n2,int n1) //一个double和一个int的和
calculate(int n1,int n2,int n3) //三个int的和
代码示例 :
public class OverLoad01 {
public static void main(String[] args) {
MyCalculator mc = new MyCalculator();
System.out.println(mc.calculate(1,2));
}
}
class MyCalculator{
//下面的四个方法构成了重载
//两个整数的和
public int calculate(int n1,int n2){
return n1 + n2;
}
//一个整数和一个double的和
public double calculate(int n1,double n2){
return n1 + n2;
}
//一个double和一个int的和
public double calculate(double n1,int n2){
return n2 + n1;
}
//三个int的和
public int calculate(int n1,int n2,int n3){
return n1 + n2 + n3;
}
}
这里我们可以看到 ,编写了总共有4个一样名字的方法
我们将方法实例化之后 ,调用类方法的时候 ,就会自动匹配我们传参的值 ,假如为两个int类型的数值 ,那么就会默认调用第一个类方法从而求得类的和
同样的 ,假设传入的参数第一个是int 第二个是double就使用第二个方法 ,反之就是第三个方法
注意事项
1)方法名:必须相同 2)参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求) 3)返回类型:无要求
来试着判断一下
判断题:
与void show(int a,char b,double c)
构成重载的有:b ,c ,d ,e
a) void show(int x,char y,double z)
//a不构成重载,因为类型的位置都是一致的,只是变量名不同
b) int show(int a,double c,char b){}
//方法不同因此可以构成
c) void show(int a,double c,char b){}
//可以构成
d) boolean show(int c,char b){}
//形参个数不一致,但仍然构成
e) void show(double c){}
//方法名一致,构成
f) double show(int x,char y,double z){}
//类型一致因此不构成方法重载
g) void shows(){}
//方法名不同,不构成方法重载
方法重载代码示例
1.编写程序,类Methods中定义三个重载方法并调用。方法名为m。三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的main()方法中分别用参数区别调用三个方法。OverLoadExercise.java
2.在Methods类,定义三个重载方法maxO,第一个方法,返回两个int值中的最大值,第二个方法,返回两个double值中的最大值,第三个方法,返回三个double值中的最大值,并分别调用三个方法。
public class OverLoadExercise {
public static void main(String[] args) {
Methods t1 = new Methods();
t1.m(2);
t1.m(2,3);
t1.m('x');
System.out.println(t1.max(2, 4));
System.out.println(t1.max(3.3, 2.5));
System.out.println(t1.max(6, 4, 3));
}
}
class Methods {
public void m(int n) {
System.out.println("平方为:" + (n * n));
}
public void m(int a, int b) {
System.out.println("相乘结果为:" + (a * b));
}
public void m(char c) {
System.out.println(c);
}
public int max(int n, int m) {
return n > m ? n : m;
//这里借助三元运算符
}
public double max(double n, double m) {
return n > m ? n : m;
}
public double max(double n, double m, double x) {
double max1 = n > m ? n : m;
return max1 > x ? max1 : x;
//这里仍然借助了三元运算符,不过添加了一个中间变量也就是max1
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析