慕尼黑5688855
2022-09-14 09:43:46
通常,Var arg方法使用相同的方法覆蓋 var arg 方法,但在我的代碼中,使用 var args 覆蓋常規(guī)方法。但一般來說,Var args 方法只應(yīng)覆蓋或被與 和 不同的其他 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條經(jīng)驗 獲得超3個贊
String[]
并且在某些情況下是等效的,因此可以被 覆蓋。這是在java中指示數(shù)組的方法之一。String...
go(String... s)
go(String[] s)

動漫人物
TA貢獻1815條經(jīng)驗 獲得超10個贊
Varargs只是對相同類型的數(shù)組的語法加糖,該數(shù)組向編譯器指示從此時開始的一系列逗號分隔的參數(shù)應(yīng)被視為數(shù)組。從簽名的角度來看,并且是相同的。例如,您可以根據(jù)需要定義 main 方法。String[]
String...
public static void main(String... args)

慕容708150
TA貢獻1831條經(jīng)驗 獲得超4個贊
這兩個聲明是等效的,因為 Java 編譯器將 varargs 擴展為指定類型的數(shù)組。所以你有效地覆蓋了方法。go
看看 https://www.journaldev.com/1257/java-varargs#how-java-varargs-work
添加回答
舉報
0/150
提交
取消