0

我有两个类,我希望它们实现一个称为 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);
}
4

3 回答 3

1

您将两种不同的方法添加到接口中:

void add(String item);
void add(int index, Object theElement);

当你实现这个接口时,你必须在你的类中添加这两个方法。

于 2013-10-25T16:44:59.220 回答
1

当两个方法具有相同的名称但不同的参数时,这称为方法重载。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 {
  ..
}
于 2013-10-25T16:45:44.323 回答
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 */
  }
于 2013-10-25T17:20:52.983 回答