我有一个ArrayClass并且mergeSortArray对其进行了扩展。并且mergeSortArray包含mergeSort()方法。但是,由于我使用super从超类调用构造函数,因此我不知道如何引用mergeSortArray(子类对象/数组)并将其作为参数传递给mergeSort方法。其实这是否可行?我知道我可以通过非OOP方式进行操作。但是,我很想知道如何以一种面向对象的方式做到这一点。

如果我说错了,请更正我,因为我是Java新手,我想学习更多有关它的信息。

// ArrayClass Object
    import java.util.*;
    import java.io.*;
    import java.math.*;

public class ArrayClass{
    public int[] input_array;
    public int nElems;

    public ArrayClass(int max){
        input_array = new int [max];
        nElems = 0;
    }

    public void insert(int value){
        input_array[nElems++] = value;
    }

    public void display(){
        for(int j = 0; j < nElems; j++){
            System.out.print(input_array[j] + " ");
        }
        System.out.println("");
    }

}



import java.io.*;
import java.util.*;
import java.math.*;

class mergeSortArray extends ArrayClass{

    public mergeSortArray(int max){
        super(max);
    }

    public void methodOne(){
        int[] output_array = new int[super.nElems];
        mergeSort( // ************* // ,output_array,0, super.nElems -1);

     }
       ................
}


我不确定替换******应该放置什么内容,以便可以将mergeSortArray作为参数传递给mergeSort方法。

最佳答案

没有mergeSortArray。您可以像这样继承input_array(也不必继承super.nElems),

 mergeSort( input_array, output_array, 0, nElems - 1);


您的子类将继承protected或具有更高可见性(而不是private)的所有内容,但是ArrayClass为您提供了两个公共字段

public int[] input_array;
public int nElems;


它们可能应该是protected并具有访问器方法(获取程序)。

protected int[] input_array;
protected int nElems;
public int size() {
  return nElems;
}
public int[] getInputArray() {
  return input_array;
}

07-28 09:16