看板 java 關於我們 聯絡資訊
看書看到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
LPH66:我覺得正是你中間提的那個問題才會有"改方法名"的解法... 08/04 02:06
bitlife:你會一次實作兩個,就代表語意上你認為兩同名者功能相同 08/04 10:50
MonyemLi:將AB的a()抽出來再建一個interface C,AB繼承C 08/04 14:15
shaopin:寫A::a(), B::a() 08/04 14:46
LaPass:public void A::a() public int B::a() 編譯不過 @@ 08/04 17:11
sbrhsieh:純Java語言層面沒有解法,http://ppt.cc/X5rx 08/04 21:17
LaPass:thx 瞭解了 08/04 21:53
lachtchlee:interface 的 method 同名 表示你濫用interface 08/06 22:05
a1234957:同意 08/06 23:58