[問題] 萬一interface中有同名方法怎麼處理?

看板java作者 (LaPass)時間14年前 (2011/08/04 01:33), 編輯推噓3(306)
留言9則, 8人參與, 最新討論串1/1
看書看到interface了 書上好像沒提到當interface中有同名方法時的處理方式 例如這種狀況: interface A { public void a(); } interface B { public void a(); } class Test implements A,B { @Override public void a() { // TODO Auto-generated method stub } } 編譯器編譯的過,執行上也ok 但實際運作上可能會出現問題,因為兩個介面所需求的操作內容可能會不一樣 如果覺得這個問題不嚴重,那試想另一種更嚴重的狀況: interface A { public void a(); } interface B { public int a(); } class Test implements A,B { @Override public ???? a() // ← int、void都不過 { // TODO Auto-generated method stub } } C#中有處理這種狀況的方法 但是java中好像沒看到 去網路上搜尋了一下,似乎都是叫人把方法的名稱改掉 請問,除了改名之外,就沒別的方法了嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.233.157.84

08/04 02:06, , 1F
我覺得正是你中間提的那個問題才會有"改方法名"的解法...
08/04 02:06, 1F

08/04 10:50, , 2F
你會一次實作兩個,就代表語意上你認為兩同名者功能相同
08/04 10:50, 2F

08/04 14:15, , 3F
將AB的a()抽出來再建一個interface C,AB繼承C
08/04 14:15, 3F

08/04 14:46, , 4F
寫A::a(), B::a()
08/04 14:46, 4F

08/04 17:11, , 5F
public void A::a() public int B::a() 編譯不過 @@
08/04 17:11, 5F

08/04 21:17, , 6F
純Java語言層面沒有解法,http://ppt.cc/X5rx
08/04 21:17, 6F

08/04 21:53, , 7F
thx 瞭解了
08/04 21:53, 7F

08/06 22:05, , 8F
interface 的 method 同名 表示你濫用interface
08/06 22:05, 8F

08/06 23:58, , 9F
同意
08/06 23:58, 9F
文章代碼(AID): #1EEOPW4Y (java)