Java方法的可变参数

Javase

Posted by 丠 on July 11, 2020

Java方法的可变参数

概念

jdk5.0出现的新特性。将同一个类中,多个方法名相同、参数类型相同、返回类型相同, 仅仅是参数个数不同的方法抽取成一个方法,这种方法称为可变参数的方法

好处

提高代码的重用性和维护性

语法

修饰符 返回类型 方法名(参数类型… 参数名){   … … } 注意:使用时,将可变长度的参数当做数组使用,等价于: 修饰符 返回类型 方法名(参数类型[] 参数名){   … … } (所以可变参数不可重载成一维数组)

public class VarargsDemo 
{
    public static void main(String args[]) 
    {
        // 调用可变参数的方法
        printMax(34, 3, 3, 2, 56.5);
        printMax(new double[]{1, 2, 3});
    }
 
    public static void printMax( double... numbers) 
    {
        if (numbers.length == 0) 
        {
            System.out.println("No argument passed");
            return;
        }
 
        double result = numbers[0];
 
        for (int i = 1; i <  numbers.length; i++)
        {
            if (numbers[i] >  result) 
            {
                result = numbers[i];
            }
        }
        System.out.println("The max value is " + result);
    }
}

使用特点

1、可变参数的实参可以为0个或任意多个,当为0个参数时传入长度为0的数组:double[0] 2、可变参数的实参可以为一维数组类型 3、可变参数和普通类型参数 一起使用时,只能放在最后 4、一个参数列表中至多有一个可变参数

可以用于方法重载

将会涉及到Java中的多态的实现

只通过父类就能够引用不同的子类,这就是多态,我们只有在运行的时候才会知道引用变量所指向的具体实例对象。

Java 实现多态有三个必要条件:继承、重写和向上转型(即父类引用指向子类对象)。

只有满足上述三个条件,才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。