使用变参数覆盖字符串

通常,Var arg方法使用相同的方法覆盖 var arg 方法,但在我的代码中,使用 var args 覆盖常规方法。


但一般来说,Var args 方法只应覆盖或被与 和 不同的其他 var args 方法覆盖或覆盖。Test.go(String[])A.go(String...)


但我得到了输出T。


class A{

    public void go(String...s){

            System.out.println("A");

    }

}


class Test extends A {


    public void go(String[] a){

        System.out.println("T");

    }


    public static void main(String[] args){

        A a = new Test();


        a.go("dd");

    }

}

输出: T


慕尼黑5688855
浏览 97回答 3
3回答

慕森王

String[]并且在某些情况下是等效的,因此可以被 覆盖。这是在java中指示数组的方法之一。String...go(String... s)go(String[] s)

动漫人物

Varargs只是对相同类型的数组的语法加糖,该数组向编译器指示从此时开始的一系列逗号分隔的参数应被视为数组。从签名的角度来看,并且是相同的。例如,您可以根据需要定义 main 方法。String[]String...public static void main(String... args)

慕容708150

这两个声明是等效的,因为 Java 编译器将 varargs 扩展为指定类型的数组。所以你有效地覆盖了方法。go看看 https://www.journaldev.com/1257/java-varargs#how-java-varargs-work
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java