从继承的接口重载Java方法

时间:2015-04-20 16:13:39

标签: java overloading

问题:

我有以下内容:

interface A 
{
    int MethodA(int x, int y);
}

interface B extends A
{
    //This is meant to overload MethodA
    int MethodA(int x, int y, int z);
}

当我尝试实现接口B并在main中运行该方法时出现问题。

class Foo implements B
{
    //For interface B
    public int MethodA(int x, int y, int z)
    {
        //Actual implementation
    }

    //For interface A
    public int MethodA(int x, int y)
    {
        //Actual implementation
    }
}

public static void main(String[] s)
{
    Foo foo = new Foo();
    //Problem occurs here
    foo.MethodA(1, 2, 3);
}

Eclipse会抱怨说"类型A中的方法MethodA(int,int,int)不适用于参数(int,int)。"

但为什么呢?我已经实现了接口B.不应该MethodA(int,int,int)有重载MethodA(int,int),使MethodA能够接受三个整数吗?

1 个答案:

答案 0 :(得分:0)

以上看起来有点困惑。

您需要指定返回类型,为每个参数指定名称(即使在界面中),并将实现的方法声明为公共例如。

   public int MethodA(int a, int b, int c)
    {
        //Actual implementation e.g.
        return 0;
    }

您的静态main()方法必须驻留在一个类中(例如上面的Foo类),最后使用真实参数调用该方法。

一旦你完成了这一切,那么一切都应该是好的。您当然可以提供如上所述的重载。您只需先解决更基本的问题。我会得到一个非常基本的单一方法,然后从那里进行增强以获得一些工作。