我试图谷歌这个,但我找不到可接受的答案。接口是否不一致,当你使一个类实现2个或更多相互不兼容的接口时?例如:
public interface Lion()
{
public void eat();
}
public interface Tiger()
{
public void eat();
}
public class Liger implements Lion, Tiger
{
public void eat(); //Problem: How does it eat? Like a lion or tiger?
}
我是否正确或远离基地?
答案 0 :(得分:3)
在Java中,保证编译到同一函数的两个接口方法返回相同的"类型" ....因此,在此上下文中,接口不一致可以参考:
当你实现2个方法实现完全相同的功能,具有不同的副作用,或者在方法签名中无法表达的不同的基本假设/算法时......即两个方法" look& #34;同样的但是"做"不同的概念任务。
还有(非特定于Java)GUI内涵,其中用户体验令人困惑,类似的组件被用于不同的任务(或者反之,相同的任务由不同的GUI组件触发)
1的解决方案是拥有更具表现力的界面,或更精确的功能名称(以举例说明更复杂的界面:也许狮子和老虎应该提供一个Eater对象,它能够以一种或多种不同的方式进食)。
答案 1 :(得分:0)
我认为以下事情更有意义,
public interface Animal{
public void eat();
}
public class Lion implements Animal{
//code
}
public class Tiger implements Animal{
//code
}
public class Liger extends Lion /*or Tiger*/{
public void eat(){}
}
是不是?