从继承接口重载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;
}