繁体   English   中英

两个接口要求以相同的名称实现方法

[英]Two interfaces require to implement the method with the same name

如果两个接口要求用相同的名称实现该方法,则method()会被调用两次。 我需要为2个不同的接口实现2种方法,如何才能同时实现这两种方法以完成不同的工作?

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();
    }
}

你不能

但是要解决您的问题,您可以下一步进行。

  1. 删除implements BarObj.BarInt, FooObj.FooInt
  2. 删除method方法
  3. 变更trigger方式

它应该看起来像这样

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");
        }
    });
}

它使用匿名类,您可以在Google上搜索更多详细信息。

在一个类中,不能有两个名称相同,参数类型和长度相同的方法。 当实现两个具有相同名称的方法的接口时,由于接口中的方法为空并且永远不会执行,因此您只需将实现仅赋予一个要为两个接口都实现的方法。 将执行的是已从接口重写的类方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM