【Java中的方法重载(Overload)_注意事项和使用细节_代码示例_练习细节剖析】

目录标题

  • 1. 什么是方法重载?
  • 2. 方法重载(Overload)的定义?
  • 3. 注意事项和使用细节
  • 4. 代码演示讲解
  • 5. 练习细节
  • 尾言

1. 什么是方法重载?

对于初学者来说,下面的代码一定十分的熟悉。

public class Test {
    public static void main(String[] args) {
        int a = 1;
        double b = 1.2;
        char c = 'C';
        boolean d = true;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

输出结果显而易见

【Java中的方法重载(Overload)_注意事项和使用细节_代码示例_练习细节剖析】_第1张图片

从中我们不难思考一个问题
a,b,c,d 为四个不同类型的参数,为什么 System.out.println(参数)都能输出呢?

查阅 jdk 的文档可以看出,println()有多种重载的方法

【Java中的方法重载(Overload)_注意事项和使用细节_代码示例_练习细节剖析】_第2张图片
这就省去了我们的许多麻烦,一个方法名只要放入的参数不同,即可输出不同的结果。

2. 方法重载(Overload)的定义?

方法重载就是方法名称重复,加载参数不同。

3. 注意事项和使用细节

1. 方法名必须相同
2. 参数列表:必须不同。(参数的类型,个数,顺序,至少有一样不同,参数名无强制要求)
3. 返回类型:无要求。(可相同,可不同)

4. 代码演示讲解

首先,关于第一点

1. 方法名必须相同

public class Test {
	//方法名都为Sum
	//一个是求两数之和,一个是求三数字和
    public int Sum(int x, int y) {
        return x + y;
    }
    public int Sum(int x, int y, int z) {
        return x + y + z;
    }

    public static void main(String[] args) {
        Test test = new Test();
        int sum1 = test.Sum(1,2);//两数之和
        int sum2 = test.Sum(1,2,3);//三数之和
        System.out.println(sum1);//3
        System.out.println(sum2);//6
    }
}

其次,针对第二点

2. 参数列表:必须不同。(参数的类型,个数,顺序,至少有一样不同,参数名无强制要求)

参数的类型不同

public class Test {
	//类型为int 和 int
    public double Sum(int x, int y) {
        return x + y;
    }
    //类型为int 和 double
    public double Sum(int x, double y) {
        return x + y;
    }
	//方法名相同,类型不同,构成重载
    public static void main(String[] args) {
        Test test = new Test();
        double sum1 = test.Sum(1,2);//int int
        double sum2 = test.Sum(1,2.1);//int double
        System.out.println(sum1);//3.0
        System.out.println(sum2);//3.1
    }
}

参数的个数

public class Test {
	//参数个数为 int int 两个
    public int Sum(int x, int y) {
        return x + y;
    }
    //参数为int int int 三个
    public int Sum(int x, int y, int z) {
        return x + y + z;
    }
	//方法名相同,个数不同构成重载
    public static void main(String[] args) {
        Test test = new Test();
        int sum1 = test.Sum(1,2);//两数之和
        int sum2 = test.Sum(1,2,3);//三数之和
        System.out.println(sum1);//3
        System.out.println(sum2);//6
    }
}

参数的顺序

public class Test {
    //类型为double  int
    public double Sum(double x, int y) {
        return x + y;
    }
    //类型为int  double
    public double Sum(int x, double y) {
        return x + y;
    }
    //方法名相同,参数顺序不同,构成重载
    public static void main(String[] args) {
        Test test = new Test();
        double sum1 = test.Sum(1.3,2);//double int
        double sum2 = test.Sum(1,2.1);//int double
        System.out.println(sum1);//3.3
        System.out.println(sum2);//3.1
    }
}

最后,第三点

3. 返回类型:无要求。(可相同,可不同)

【Java中的方法重载(Overload)_注意事项和使用细节_代码示例_练习细节剖析】_第3张图片
可以看出,仅仅是返回类型不同,编译器会给出警告⚠

如果运行就会出现以下报错
【Java中的方法重载(Overload)_注意事项和使用细节_代码示例_练习细节剖析】_第4张图片

编译器并不能根据返回类型的不同,来判断这两个方法是否是重载,必须有前两点中的任意一点。

5. 练习细节

void A(int a, char b, double c) {}

以下与A 构成重载的是?

	//不必考虑返回类型
	
	//参数类型相同
	//int char double
	//int char double
    void A(int x, char y, double z) {}//不是
    
    //参数类型不同
	//int [char] [double]
	//int [double] [char]
    int A(int a, double c, char b) {}//是

	//参数类型不同
	//int [char] [double]
	//int [double] [char]
    void A(int a, double c, char b) {}//是

	//参数类型不同和个数不同
	//int char [double]
	//int [char] [?]
    boolean A(int c, char b) {}//是

	//参数类型不同和个数不同
	//[int] [char] [double]
	//[double] [?] [?]
    void A(double c) {}//是

	//参数类型想同
	//int char double
	//int char double
    double A(int x, char y, double z) {}/不是

	//方法名不同 A AA
    void AA() {}//不是

尾言

梦想永在凌云意,意气风发。 代码筑就万世基,积沙镇海。

诸君加油(ง •_•)ง

请添加图片描述

你可能感兴趣的:(Java零基础学习,java,算法,jvm)