作者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
1F:推 LPH66:我觉得正是你中间提的那个问题才会有"改方法名"的解法... 08/04 02:06
2F:→ bitlife:你会一次实作两个,就代表语意上你认为两同名者功能相同 08/04 10:50
3F:→ MonyemLi:将AB的a()抽出来再建一个interface C,AB继承C 08/04 14:15
4F:推 shaopin:写A::a(), B::a() 08/04 14:46
5F:→ LaPass:public void A::a() public int B::a() 编译不过 @@ 08/04 17:11
7F:→ LaPass:thx 了解了 08/04 21:53
8F:推 lachtchlee:interface 的 method 同名 表示你滥用interface 08/06 22:05
9F:→ a1234957:同意 08/06 23:58