我有一个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;
}