Java 两个接口需要实现具有相同名称的方法
如果两个接口需要使用相同的名称实现该方法,则会调用该方法()两次。 我需要为两个不同的接口实现两种方法,如何实现这两种方法来做不同的事情Java 两个接口需要实现具有相同名称的方法,java,Java,如果两个接口需要使用相同的名称实现该方法,则会调用该方法()两次。 我需要为两个不同的接口实现两种方法,如何实现这两种方法来做不同的事情 public class MainClass implements BarObj.BarInt, FooObj.FooInt{ MainClass(){ } void trigger() { new BarObj(this); new FooObj(this); } @Ov
public class MainClass implements BarObj.BarInt, FooObj.FooInt{
MainClass(){
}
void trigger()
{
new BarObj(this);
new FooObj(this);
}
@Override
public void method() {
System.out.println("I DONT KNOW WHICH METHOD");
}
public static void main(String[] args) {
new MainClass().trigger();
}
}
public class BarObj {
interface BarInt
{
void method();
}
public BarObj(BarInt _barInt)
{
_barInt.method();
}
}
public class FooObj {
interface FooInt
{
public void method();
}
public FooObj(FooInt _fooInt)
{
_fooInt.method();
}
}
一个类中不能有两个名称相同、参数类型和长度相同的方法。当您实现两个具有相同名称的方法的接口时,您只需要将实现指定给一个方法,该方法充当两个接口的实现对象,因为接口中的方法是空的,永远不会执行。将执行的是已从接口重写的类方法 你不能 但要解决你的问题,你可以做下一步
实现BarObj.BarInt、FooObj.FooInt
方法
方法触发器
方法void trigger()
{
new BarObj(new BarObj.BarInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm bar");
}
});
new FooObj(new FooObj.FooInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm foo");
}
});
}
它使用匿名类,您可以在谷歌上搜索更多细节。我认为编译器会在实现类中查找一个被重写的方法,即使您有两个包含相同方法的接口。所以你无法区分。可能的重复:创建两个类,一个实现一个接口,另一个实现另一个,并创建一个主类来启动两个对象。我忘记了我在类中使用接口的设计模式的名称。你还可以讨论两种方法的优缺点吗?我认为使用该接口将有助于团队工作,因为我们检查第一行以了解成员使用的是正确的代码,单独使用实现的方法将使文件看起来整洁。但是,如果两个接口使用相同的名称(如我的问题),那么很难找到错误。@MingLeung我的观点是,在您的案例中,使用这些接口的事实是实现细节,因此它不应该是类接口的一部分。即使只有一个接口或不同的方法名,也不应该在类中实现它们。当人们试图节省内存而不创建额外实例时,就会出现这种模式。在现代,这种情况很少发生。仅当您创建此类的大量实例时。