我有两个类和一个接口。我在接口中创建了方法,并在实现接口的类中覆盖了它们。现在我试图将这些方法导入另一个类。由于某种原因,他们找不到方法。很沮丧,因为我不知道为什么。导入方法的接口,重写类和类按以下顺序排列。他们为什么不能导入?:
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]);
}
}
}
答案 0 :(得分:0)
接口上的所有方法都是public abstract
隐式的。在Java 8之前,您可以使用方法执行任何其他操作。
接口上的所有方法(在Java 8之前)都是实例方法,就像你编写它们一样。这意味着他们必须处理接口的实例。
注意:你编写方法的方式,他们实际上并不需要实例,可能应该在interface
上。您可以使用static
方法,但更好的选择是将它们移到实用程序类,并import static
将它们移到SortMain
。
您可以编写
进行最少的更改new YourSort().recursiveSort(b);
虽然这会起作用,但由于多种原因这很糟糕,尤其是因为YourSort对象毫无意义,只需要编译代码就可以了。