JAVA学习.方法的重载的理解

package ljy.overload;
/**
 * 
 */

/**
 * @author fshxxxyydys
 *
 */
public class overloadMethod { //方法重载
	
	//JAVA只支持方法重载,不支持符号重载
	//在传统的语言中,方法名称不能重复,优秀的方法名资源
	//只能被使用一次,很是遗憾,程序员必须花费额外的时间
	//去费尽心机思考替代的方法名。
	//在现代的编程语言,比如JAVA,支持方法名的重复使用,
	//这种语法现象叫做方法名的重载,但是有一定的约束条件。
	//1.参数的数量不同。
	//2.参数的数量相同,参数的数据类型也要略有不同
	//3.参数名、返回值以及访问修饰符均不作为考量的尺度。
	
	//重载失败就会构成重名(duplicate method)
	
	//重载给我们带来了超级方法和智能方法
	
	//本质上:根本不存在方法的重载 在编译器编译的时候将
	//所谓的重载的方法的名称全部改掉了,虽然这样但是我们
	//享受到了所谓的“重载”所带来的乐趣和便利。
	int add(int a,int b){    //编译器:add_int_int
		
		return a + b;
	}
	
	double add(int a,double b){ //编译器:add_int_double
		
		return a + b;
		
	}
	int add(int a,int b,int c){ //编译器:add_int_int_int
		
		return a + b+ c;
	}
	
    //重名
	//private void add(int c,int d){
	//		
	//					return c + d;
	//}
	
	double add(double a,double b){ //编译器:add_double_double
		
		return a + b;
	}
	
	//不定参数,m不在是普通的整型变量,而是一个整型数组的名称
	//一个方法中的不定参数只能有一个,而且必须是该方法参数列表的最后一个
	double add(double a, int ... m ){
		
		double sum = a;
		
		for(int x:m)
			sum += x;
		return  sum; 
	}	
}


/**
 * 
 */
package ljy.overload;

/**
 * @author fshxxxyydys
 *
 */
public class Tester {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		overloadMethod om = new overloadMethod();
		//智能:根据传入参数的样式,选则合适的方法进行调用
		//System.out.println();就是一个最典型的例子,几乎
		//你放进去的东西都可以被打印,因为一个方法名下有
		//十几个函数在支持者它,所以你觉得它功能强大。
		System.out.println(om.add(1, 2));
		System.out.println(om.add(1, 2.0));
		System.out.println(om.add(5.0, 2.0));
		System.out.println(om.add(1, 2,3));
		
		//第一个数是double型的,剩余的整型可以无限添加
		System.out.println(om.add(1.8,1,2,3,4,5,6,7));
		
	}
}

===============================================================

Result:

3
3.0
7.0
6
29.8

===============================================================


原创出处:http://blog.csdn.net/u012830807

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章