[英]implementing an interface with two different method signature and body
我有两个类,我希望它们实现一个称为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);
}
您将两种不同的方法添加到接口:
void add(String item);
void add(int index, Object theElement);
实现此接口时,必须在类中添加这两种方法。
当两个方法具有相同的名称但参数不同时,这称为方法重载 。 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 {
..
}
为您的特定接口创建父接口:
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 */
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.