Java 导入重写的接口方法

Java 导入重写的接口方法,java,class,import,interface,Java,Class,Import,Interface,我有两个类和一个接口。我在接口中创建了方法,并在实现接口的类中重写了它们。现在我尝试将这些方法导入到另一个类中。由于某些原因,没有找到它们的方法。非常沮丧,因为我不知道为什么。接口、重写类和导入方法的类的顺序如下。为什么他们不能进口 public interface SortInterface { public abstract void recursiveSort(int[] list); public abstract void iterativeSort(int[] l

我有两个类和一个接口。我在接口中创建了方法,并在实现接口的类中重写了它们。现在我尝试将这些方法导入到另一个类中。由于某些原因,没有找到它们的方法。非常沮丧,因为我不知道为什么。接口、重写类和导入方法的类的顺序如下。为什么他们不能进口

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]);
        }
    }
}
public类YourSort实现SortInterface{
@凌驾
公共无效迭代排序(int[]列表){
for(int i=1;i=0&&temp0&&array[i-1]>temp;i--)array[i]=array[i-1];
数组[i]=温度;
递归排序(数组,n,j+1);}
@凌驾
公共无效递归排序(int[]列表){
int j=list.length;
int n=0;
if(j0&&list[i-1]>temp;i--)list[i]=list[i-1];
列表[i]=临时;
递归排序(列表,n,j+1);}
} 
@凌驾
public int getCount(){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
@凌驾
公共长getTime(){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
}
导入类:

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]);
        }
    }
}
公共类排序{
静态int[]b;
静态int[]c;
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
b=新整数[5];
b[0]=8;
b[1]=5;
b[2]=9;
b[3]=4;
b[4]=2;
递归排序(b);
c=新整数[5];
c[0]=8;
c[1]=5;
c[2]=9;
c[3]=4;
c[4]=2;
递归排序(b);

对于(inti=0;i接口上的所有方法都是隐式的
public abstract


接口上的所有方法(Java8之前)都是您编写的实例方法。这意味着它们必须在接口的实例上工作

注意:按照您编写方法的方式,它们实际上不需要实例,可能应该在
接口上。您可以使它们成为
静态方法,但更好的替代方法是将它们移动到实用程序类,然后从
SortMain
导入静态方法

对于最少的更改,您可以编写

new YourSort().recursiveSort(b);

虽然这会起作用,但由于许多原因,它是可怕的,尤其是因为YourSort对象是毫无意义的,只需要让代码进行编译。

你认为递归排序(b);
应该做什么?你认为为什么?递归排序(b)是一个实现递归排序的方法。不,这不是我的意思。你认为表达式应该做什么?你为什么这么认为?它是一个方法调用?一个静态方法还是实例方法?如果它是一个静态方法,它属于什么类?编译器如何知道?如果它是一个实例方法,哪个实例?编译器如何知道ow?因为这似乎是一个家庭作业,没有明显的理由使用接口,我假设你已经被告知要使用接口。如果没有,你应该在实用程序类上有一个静态方法(参见我的答案)。我被告知要使用接口。上面发布的类YourSort实现了该类。YourSort还实现了该方法的接口。