作者LaPass (LaPass)
看板java
標題[問題] 萬一interface中有同名方法怎麼處理?
時間Thu Aug 4 01:33:17 2011
看書看到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
→ LaPass:thx 瞭解了 08/04 21:53
推 lachtchlee:interface 的 method 同名 表示你濫用interface 08/06 22:05
→ a1234957:同意 08/06 23:58