我有一个ArrayClass
和mergeSortArray
扩展它。并且mergeSortArray
包含mergeSort()
方法。然而,因为我用super
来调用超类的构造函数,所以我不知道如何引用mergeSortArray(子类对象/数组),并将其作为mergeSort
方法中的参数传递。事实上,这是否可行?我知道我可以以非OOP的方式做到这一点。不过,我很想知道如何以OOP的方式做到这一点。Java 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
方法。
@Elliott_Frisch如果变量'在ArrayClass protected',子类可以访问他们(因为他们不是私人的)。在这种情况下,为什么我仍然要指定'public int size()'和'public int [] getInputArray()'实例方法? – mynameisJEFF 2014-12-02 01:10:30
这些是访问器方法。一般都希望公开这些字段(就像他们在你的问题中一样)。 – 2014-12-02 01:53:28
但如果这些字段是受保护的,我可以在没有访问器方法的情况下访问它们。那么为什么需要访问器方法? – mynameisJEFF 2014-12-02 02:10:51