通常,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
3 回答

慕森王
TA贡献1777条经验 获得超3个赞
String[]
并且在某些情况下是等效的,因此可以被 覆盖。这是在java中指示数组的方法之一。String...
go(String... s)
go(String[] s)

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

慕容708150
TA贡献1831条经验 获得超4个赞
这两个声明是等效的,因为 Java 编译器将 varargs 扩展为指定类型的数组。所以你有效地覆盖了方法。go
看看 https://www.journaldev.com/1257/java-varargs#how-java-varargs-work
添加回答
举报
0/150
提交
取消