方法的重载

概念:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可

特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。

例子:

//返回两个整数的和
  int add(int x,int y){return x+y;}
//返回三个整数的和
  int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
  double add(double x,double y){return x+y;}

方法的可变个数的参数

1.可变参数:方法参数部分指定类型的参数个数是可变多个
2.声明方式:方法名(参数的类型名...参数名)
3.可变参数方法的使用与方法参数部分使用数组是一致的
4.方法的参数部分有可变形参,需要放在形参声明的最后

public class Person3 {
    /**
     * 用数组的方式来传递可变个数的参数
     * 如果没有参数,就要定义一个空数组或者是null
     * @param args
     */
    public void printInfo(String[] args){//问题,我们能够的打印的信息都有来源于方法的参数也就是形参的传递
        //我现在可能给方法要传递的不同的参数?如果在这种情况下,我们不知道想要给方法传递多少个参数(姓名、性别、年龄;也可能身份证号码、家庭住址、手机号)
        for(int i = 0; i < args.length; i++){
            System.out.println(args[i]);
        }
    }
    /**
     * 用java特有的...的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同
     * 如果没有参数就可以不填.
     * 这种...代表可以传递0到多个参数
     * 如果一个方法有多个的形参,可变的形参(...这种的参数)一定要放在所有的参数最后
     * printInfo1(String s,int d,String... args)这样的放置参数的方式是对的
     * printInfo1(String s,String... args,int d)这样的放置参数的方式是不对的
     * printInfo1(String... args,String s,int d)这样的放置参数的方式是不对的
     * @param args
     */
    public void printInfo1(String... args){
        for(int i = 0; i < args.length; i++){
            System.out.println(args[i]);
        }
    }

    public void test(int... i){

    }
}