问题:
我有以下内容:
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能够接受三个整数吗?
答案 0 :(得分:0)
以上看起来有点困惑。
您需要指定返回类型,为每个参数指定名称(即使在界面中),并将实现的方法声明为公共例如。
public int MethodA(int a, int b, int c)
{
//Actual implementation e.g.
return 0;
}
您的静态main()
方法必须驻留在一个类中(例如上面的Foo
类),最后使用真实参数调用该方法。
一旦你完成了这一切,那么一切都应该是好的。您当然可以提供如上所述的重载。您只需先解决更基本的问题。我会得到一个非常基本的单一方法,然后从那里进行增强以获得一些工作。