记录方法重载overload的学习
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
在之前方法的基础上,学习到一种更加灵活的使用方法的形式,不需要记忆那么多方法名了,使用起来真的很不错。
提示:以下是本篇文章正文内容,下面案例可供参考
一、方法重载overload是什么?
对于类似的方法来说,因为参数表不一样,却需要记住那么多不同的方法名称,太麻烦。
所以引入方法重载概念:多个方法名称一样但是参数列表不一样。
好处:只需要记住一个方法名称,就可以实现多个功能。
二、方法重载overload学习与应用之旅
1.没有使用方法重载时的情况
代码如下(示例):
package fangfause;
public class overload1 {
public static void main(String[] args) {
//比如现在定义一些方法,它可以进行一些两个数字的相加,三个数字的相加,四个数字的相加...
//没有使用方法重载时
System.out.println(sum2(10,20));
System.out.println(sum3(10,20,30));
System.out.println(sum4(10,20,30,40));
System.out.println(sum5(10,20,30,40,50));
}
public static int sum2(int a,int b){
return a+b;
}
public static int sum3(int a,int b,int c){
return a+b+c;
}
public static int sum4(int a,int b,int c,int d){
return a+b+c+d;
}
public static int sum5(int a,int b,int c,int d,int e){
return a+c+d+e;
}
}
对于类似的方法来说,因为参数表不一样,却需要记住那么多不同的方法名称,太麻烦。
所以引入方法重载概念:多个方法名称一样但是参数列表不一样。
好处:只需要记住一个方法名称,就可以实现多个功能。
2.使用方法重载之后:
数据类型相同:
代码如下(示例):
package fangfause;
public class overload2 {
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
//只管写参数即可,只要有一个对的上以下定义过的方法即可
}
//方法名一致此时构成方法重载
public static int sum(int a,int b){
return a+b;
}
public static int sum(int a,int b,int c){
return a+b+c;
}
public static int sum(int a,int b,int c,int d){
return a+b+c+d;
}
public static int sum(int a,int b,int c,int d,int e){
return a+c+d+e;
}
}
数据类型不同:
package fangfause;
public class overload2 {
public static void main(String[] args) {
System.out.println(sum(10,20.0));
System.out.println(sum(10.1,20));
}
//方法名一致此时构成方法重载
public static int sum(int a,double b){
return (int)(a+b);
}
public static int sum(double a,int b){
return (int)(a+b);
}
public static int sum(double a,double b,double c){
return (int)(a+b+c);
}
public static int sum(int a,int b,int c){
return a+b+c;
}
}
3.方法重载与下列因素有关:
1.参数个数不同。2.参数类型不同。3.参数的多类型顺序不同。
4.方法重载与下列因素无关:
1.与参数的名称无关。2.与方法的返回值类型无关。
习题
1.定义一个方法,判断两个数据是否一样,两个数据分别是两个byte类型,两个short类型,两个int类型,两个long类型
package fangfause;
public class oxiti1 {
public static void main(String[] args) {
byte a=10;
byte b=20;
System.out.println(isSame(a,b));
System.out.println(isSame((short)20,(short)b));
System.out.println(isSame(11,12));
System.out.println(isSame(10l,20l));
}
public static boolean isSame(byte a,byte b){
System.out.println("两个byte参数的方法执行!");
boolean same;
if(a==b)
{
same=true;
}else {same=false;}
return same;
}
public static boolean isSame(short a,short b){
System.out.println("两个short参数的方法执行!");
boolean same=a==b?true:false;
return same;
}
public static boolean isSame(int a,int b){
System.out.println("两个int参数的方法执行!");
return a==b;
}
public static boolean isSame(long a,long b){
System.out.println("两个long参数的方法执行!");
if(a==b)
{
return true;
}else {return false;}
}
}
2.判断那些方法是重载关系
1.public static void open(){}//正确重载;
2.public static void open(int a){}//正确重载;
3.static void open(int a,int b){}//代码错误:和第八行冲突;
4.public static void open(double a,int b){};//正确重载
5.public static void open(int a,double b){};//代码错误:和第六行冲突6.public void open(int i,double d){};//代码错误和第五行冲突
7.public static void OPEN(){};//代码正确不会报错,但是并不是有效重载
8.public static void open(int i,int j){};//代码错误:和第三行重复
3.实现重载的println方法,可以做到传什么都行
package fangfause;
public class oxiti2 {
public static void main(String[] args) {
myprint(100);
myprint("hello");
}
public static void myprint(byte num){
System.out.println(num);
}
public static void myprint(short num){
System.out.println(num);
}
public static void myprint(int num){
System.out.println(num);
}
public static void myprint(long num){
System.out.println(num);
}
public static void myprint(float num){
System.out.println(num);
}
public static void myprint(double num){
System.out.println(num);
}
public static void myprint(char zifu){
System.out.println(zifu);
}
public static void myprint(boolean is){
System.out.println(is);
}
public static void myprint(String str){
System.out.println(str);
}
}