Java(1):方法重载(1)

日期:2017/10/10


Java学习不含糊(1)

一、方法的重载

狠抓了一个国庆黄金周,java基础中的基础(数据结构--数组,类型--primitive数据,类的属性--class,成员变量,方法调用和传递参数;结构化--if..else../while.../for.../swith....case...default...break...)已经打牢。之前有python的经验,给一分钟装逼的话,确实对“语言是一个工具”这句话有点独特见解,但碍于造诣不深,还是继续埋头苦干,不吹哔哔。

1. 方法的重载:

1.1 在Github下了一个教程版的java代码,里面的定义如下(精辟!):

在同一个类中,方法名相同,参数列表不同的方法。参数列表不同:个数不同,数据类型不同与返回值类型无关。

那不就乱套了吗!?函数名都能一样,,在C语言要被打死的。C++/Java 支持函数重载而C语言不支持函数重载。(为啥?参考博文:http://blog.csdn.net/FX677588/article/details/70207794;)

方法重载代码如下:

package com.object;

/*
 * 	比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,
	两个int类型,两个long类型,并在main方法中进行测试
 * */

/*
 * 	方法重载:
		在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
		和返回值类型无关。
 * */
public class MethodRestructure {
	public static void main(String[] args){
		//test
		byte a = 10;
		byte b = 10;
		short a1 = 233;
		short b1 = 766;
		
		System.out.println(compare(a1,b1)+" 0");
		
		System.out.println(compare(a,b)+" 1");
		
		System.out.println(compare(10,10)+" 2");
	}
	//byte
	public static boolean compare(byte a,byte b){
		System.out.print("byte ");
		return a == b;
	}
	
	//short
	public static boolean compare(short a,short b){
		System.out.print("short ");
		return a == b;
	}

	//int
	public static boolean compare(int a,int b) {
		System.out.print("int ");
		return a == b;
	}
	
	//long
	public static boolean compare (long a,long b){
		System.out.print("long ");
		return a == b;
	}
}



1.2 其实恰恰相反,方法的重载大大促进了代码的复用和适用场景。当然也有很多的误区,比如造成方法重载的条件看起来就比较复杂了,有大牛总结的很好了(
http://blog.csdn.net/shippingxing/article/details/47042627 ,感谢助攻)。





1.2.1 对于两个方法,如果只有返回值不同,那么不构成重载,程序会报错。

class A{
    public void cry()
    {
        ......
    }
    public int cry()
    {
        return 0;
    }   
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.2.2 对于两个方法,如果只有访问修饰符不同,那么不构成重载,程序会报错。

class A{
    public void cry()
    {
        ......
    }
    protected int cry()
    {
        ......
    }   
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.2.3 对于两个方法,如果只是参数命名不同,那么不构成重载,程序会报错。

class A{
    public void cry(int a)
    {
        ......
    }
    protected int cry(int b)
    {
        ......
    }   
}

1.3 方法重载的同时,同名方法也是可以互相调用的!见下面的代码:

package com.object;

public class MethodRestructureSum {
	public static void main(String[] args){
		//需求:请写一个功能,实现两个数据的求和
		System.out.println(sum(10,20));

		//需求:请写一个功能,实现三个数据的求和
		//System.out.println(sum2(10,20,30));
		System.out.println(sum(10,20,30));

		System.out.println(sum(1.5,2.5));
		
		System.out.println(sumNest(10,20,30));
	}
	
	public static int sum(int a,int b){
		System.out.print("Int Result : "+a +"+"+b+" = ");
		return a+b;
	}
	
	public static int sum(int a,int b,int c){
		System.out.print("Int Result : "+a +"+"+b+"+"+c+ "= ");
		return a+b+c;
	}
	
	public static double sum(double a,double b){
		System.out.print("Double Result : "+a +"+"+b+ "= ");
		return a+b;
	}
	
	public static int sumNest(int a,int b,int c){
		System.out.print("Int Nest Result : "+a +"+"+b+"+"+c+ "= ");
		int result = sum((a + b),c);
		return result;
	}
	

}
Java的方法重载还有很多的运用,待续。。


END.




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值