作者:黄济民

方法重载又被称为Overload 使用方法重载的时候要考虑功能是否相似,尽可能让方法名不同。

package com.hjm.dome;
/**
• @author Rmin

  • 以下代码不使用“方法重载机制”,不使用Overload,分析程序存在缺点?

1. sumInt,sumLong,sunDouble方法虽然功能不同,但是功能相似的。都是求和。在以下程序当中功能相似的方法,分别起到了三个不同的名字,这对于程序员来说,调用方法的时候不方便,程序员需要记忆更多方法,才能完成调用。【不方便】•  

2. 代码不美观。•  

有没有这样的一种机制:功能虽然不同,但是“功能相似”的时候,有没有这样的一种机制,可以让程序员使用这些方法的时候就像在使用同一个方法一样,这样程序员以后编写代码比较方便,也不需要记忆更多的方法名。代码也会很美观。•  

有这种机制:方法重载机制Overload• 


*/
public class OverloadText01 {
//入口
public static void main(String[] args) {
	
	//调用方法
	int result1 = sumInt(1,2);
	System.out.println(result1);
	
	double result2 = sumDouble(1.0,2.0);
	System.out.println(result2);
	
	long result3 = sumLong(1L,2L);
	System.out.println(result3);
	
}

//定义一个方法,可以计算两个int类型数据的和
public static int sumInt(int a, int b) {
	return a + b;
}
//定义一个方法,可以计算两个double类型数据的和
public static double sumDouble(double a, double b) {
	return a + b;
}
//定义一个方法,可以计算两个long类型数据的和
public static long sumLong(long a, long b) {
	return a + b;
}

//最终希望达到的效果是:程序员在使用上面的三个相似的方法的时候,就行在用一个方法一样。
//java支持这种机制【有些语言不支持,例如:JavaScript】
}
package com.hjm.dome;
/**
• @author Rmin
  • 该程序是一个体验程序,体验一下方法重载的优点:

* 程序员调用方法的时候,比较方便,虽然调用的是不同的方法,但是就感觉在使用一个方法一样。
不需要记忆更多的方法名。

* 代码美观
  • 前提:功能相似的时候,方法名可以相同。
  • 但是:功能不同的时候,尽可能让这两个方法的名字不同。
    */

public class OverloadText02 {

public static void main(String[] args) {
	
	//调用方法的时候就像在使用一个方法一样
	//参数的类型不同,对应调用的方法不同。
	//此时区分方法不再依靠方法名了,依靠的是参数的数据类型。
	System.out.println(sum(1,2));
	System.out.println(sum(1.0,2.0));
	System.out.println(sum(1L,2L));
	
}


//以下三个方法构成了方法重载机制
public static int sum(int a, int b) {
	System.out.println("sum(int,int)");
	return a + b;
}
public static long sum(long a, long b) {
	System.out.println("sum(long,long)");
	return a + b;
}

public static double sum(double a, double b) {
	System.out.println("sum(double,double)");
	return a + b;
}
}
package com.hjm.dome;
/**
• @author Rmin
• 
• 方法重载:
1.方法重载又被称为:Overload• 
2.什么时候考虑使用方法重载?* 功能相似的时候,尽可能让方法名相同。• 
【但是:功能不同/不相似的时候,尽可能让方法名不同】• 
3.什么条件满足之后构成的方法重载?* 在同一类当中* 方法名相同* 参数列表不同:- 数量不同- 顺序不同- 类型不同• 
4.方法重载和什么有关系,和什么没有关系?* 方法重载和方法名+参数列表有关系* 方法重载和返回值类型无关* 方法重载和修饰符列表无关*/
public class OverloadText03 {
public static void main(String[] args) {
	m1();
	m1(10);
	
	m2(1,2.0);
	m2(2.0,1);
	
	m3(10);
	m3(3.0);
// m4(1,2);
 // m4(1,2);
}

//以下两个方法构成重载
public static void m1() {}
public static void m1(int a) {}

//以下两个方法构成重载
public static void m2(int a,double b) {}
public static void m2(double a,int b) {}

//以下两个方法构成重载
public static void m3(int x) {}
public static void m3(double x) {}


//编译错误:以下不是方法重载,是发生了方法重复
// public static void m4(int a,int b) {}
 // public static void m4(int a,int b) {}// public static void x() {
 // 
 // }
 // public static int x() {
 // 
 // }// void y() {
 // 
 // }
 // 
 // public static void y() {
 // 
 // }}