Java:什么是接口不一致?

时间:2011-12-16 02:48:56

标签: java interface polymorphism

我试图谷歌这个,但我找不到可接受的答案。接口是否不一致,当你使一个类实现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?
}

我是否正确或远离基地?

2 个答案:

答案 0 :(得分:3)

在Java中,保证编译到同一函数的两个接口方法返回相同的"类型" ....因此,在此上下文中,接口不一致可以参考:

  1. 当你实现2个方法实现完全相同的功能,具有不同的副作用,或者在方法签名中无法表达的不同的基本假设/算法时......即两个方法" look& #34;同样的但是"做"不同的概念任务。

  2. 还有(非特定于Java)GUI内涵,其中用户体验令人困惑,类似的组件被用于不同的任务(或者反之,相同的任务由不同的GUI组件触发)

  3. 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(){}
}
是不是?