我有两个类我希望它们实现一个名为LinearList的特定接口,它们有很多共同的方法,但是其中一个方法调用add,它有两个不同的参数,并且方法的主体在两个方面都不同的类,所以如何添加方法添加到接口
public void add(String item) {
array.add(item);
}
public void add(int index, Object theElement) {
if (index < 0 || index > size)
// invalid list position
throw new IndexOutOfBoundsException
("index = " + index + " size = " + size);
// valid index, make sure we have space
if (size == element.length) {
// no space, double capacity
Object [] newArray = new Object[element.length*2];
System.arraycopy(element,0,newArray,0,element.length);
element = newArray;
}
// shift elements right one position
for (int i = size - 1; i >= index; i--)
element[i + 1] = element[i];
element[index] = theElement;
System.out.println("added ok");
size++;
}
}
public interface LinearList {
public int size();
public void add(int index, Object theElement);
}
答案 0 :(得分:1)
您可以在界面中添加两种不同的方法:
void add(String item);
void add(int index, Object theElement);
实现此接口时,必须在类中添加这两种方法。
答案 1 :(得分:1)
当两个方法具有相同名称但参数不同时,则称为method overloading。 Java接口支持方法重载,因此您只需声明它们:
void add(int index, Object theElement);
void add(String item);
这将强制您实现这两个,如果您不想这样做,唯一的解决方案是使用两个接口(可能是第三个通用接口)。例如:
interface GenericAddable {
void add(String item);
}
interface IndexedAddable {
void add(int index, Object element);
}
interface LinearList {
void method1();
void method2();
}
class List1 implements LinearList, GenericAddable {
..
}
class List2 implements LinearList, IndexedAddable {
..
}
答案 2 :(得分:1)
为您的特定接口创建父接口:
interface Addable {
/* common methods go here */
}
interface LinearListAddable extends Addable {
void add(int index, Object theElement);
}
interface IndexedAddable extends Addable {
/* some other specific add method */
}
class Test implements IndexedAddable {
/* add method implemeted */
}