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

来源:互联网 发布:苏小红c语言第三版pdf 编辑:程序博客网 时间:2024/06/06 03:36

日期: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){//testbyte 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");}//bytepublic static boolean compare(byte a,byte b){System.out.print("byte ");return a == b;}//shortpublic static boolean compare(short a,short b){System.out.print("short ");return a == b;}//intpublic static boolean compare(int a,int b) {System.out.print("int ");return a == b;}//longpublic 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.




原创粉丝点击