Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从继承接口重载Java方法_Java_Overloading - Fatal编程技术网

从继承接口重载Java方法

从继承接口重载Java方法,java,overloading,Java,Overloading,问题: 我有以下资料: interface A { int MethodA(int x, int y); } 及 当我尝试实现接口B并在main中运行该方法时,问题就出现了 class Foo implements B { //For interface B public int MethodA(int x, int y, int z) { //Actual implementation } //For interface A

问题:

我有以下资料:

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

当我尝试实现接口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也能够接受三个整数吗?

以上看起来有点混乱

您需要指定返回类型,为每个参数指定名称(甚至在接口中),并将实现的方法声明为public,例如

   public int MethodA(int a, int b, int c)
    {
        //Actual implementation e.g.
        return 0;
    }
您的静态
main()
方法必须驻留在一个类中(例如上面的
Foo
类),最后使用实际参数调用该方法


一旦你做到了,那么一切都会好起来。您当然可以像上面那样提供重载。你只需要先解决更基本的问题。我将使用一个非常基本的单一方法,然后从那里进行增强,以使某些方法工作。

可能的重复-在Java 7中对我有效,当然,一旦我纠正了给定代码中的所有编译错误(返回类型、公共修饰符、参数名称),这不是Java代码。这是纯文本。这里所谓的编译错误似乎不适用。也许这行输入错误,应该是:A foo=new foo()
一旦你做到了这一点,那么一切都应该是好的
。不是真的。那么
foo.MethodA(int,int,int)呢?我错过了。非常感谢。这里有太多的争议是的。在电视上看到这样的问题让我头疼。但是,如果没有回答,那么问题的质量只会变得更差。downvoter能否提供一个原因或撤销?很抱歉,downvote的回答只包含了返回类型的问题,但在它的前几个版本中完全忽略了方法参数和方法调用问题。
   public int MethodA(int a, int b, int c)
    {
        //Actual implementation e.g.
        return 0;
    }