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还实现了该方法的接口。