导入重写的接口方法

时间:2015-11-16 23:27:22

标签: java class import interface

我有两个类和一个接口。我在接口中创建了方法,并在实现接口的类中覆盖了它们。现在我试图将这些方法导入另一个类。由于某种原因,他们找不到方法。很沮丧,因为我不知道为什么。导入方法的接口,重写类和类按以下顺序排列。他们为什么不能导入?:

public interface SortInterface {

    public abstract void recursiveSort(int[] list);

    public abstract void iterativeSort(int[] list);

    int getCount();

    long getTime();

}

覆盖课程:

public class YourSort implements SortInterface{
      @Override
    public void iterativeSort(int[] list) {
        for(int i =1; i< list.length; i++){
        int temp = list[i];
        int j;
        for (j = i-1; j>=0 && temp < list[j]; j--)
            list[j+1] = list[j];
        list[j+1] = temp;   
    }}

    public static void recursiveSort(int array[], int n, int j) {
if (j < n) {
    int i;
    int temp = array[j];

    for (i=j; i > 0 && array[i-1] > temp; i--) array[i] = array[i-1];
    array[i] = temp;

    recursiveSort(array,n, j+1);  }} 


    @Override
    public void recursiveSort(int[] list) {
        int j = list.length;
         int n=0;
         if (j < n) {
        int i;
        int temp = list[j];

        for (i=j; i > 0 && list[i-1] > temp; i--) list[i] = list[i-1];
        list[i] = temp;

        recursiveSort(list,n, j+1);  }
    } 



    @Override
    public int getCount() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public long getTime() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

导入课程:

public class SortMain {
 static int[] b;
static int[] c;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        b = new int[5];
        b[0]= 8;
        b[1]=5;
        b[2]=9;
        b[3]=4;
        b[4]=2;
        recursiveSort(b);

        c = new int[5];
        c[0]= 8;
        c[1]=5;
        c[2]=9;
        c[3]=4;
        c[4]=2;
        recursiveSort(b);

        for(int i = 0; i<5; i++){
            System.out.println(b[i]);
        }

        iterativeSort(c);
         System.out.println("");

        for(int i = 0; i<5; i++){
            System.out.println(c[i]);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

接口上的所有方法都是public abstract隐式的。在Java 8之前,您可以使用方法执行任何其他操作。

接口上的所有方法(在Java 8之前)都是实例方法,就像你编写它们一样。这意味着他们必须处理接口的实例。

注意:你编写方法的方式,他们实际上并不需要实例,可能应该在interface上。您可以使用static方法,但更好的选择是将它们移到实用程序类,并import static将它们移到SortMain

您可以编写

进行最少的更改
new YourSort().recursiveSort(b);

虽然这会起作用,但由于多种原因这很糟糕,尤其是因为YourSort对象毫无意义,只需要编译代码就可以了。