[英]Java OOP: how subclass-object use method from superclass (that method has been Override)
[英]Java OOP: referencing subclass object
我有一個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;
}
首先,我建議您不要在OO代碼上使用公共字段。 您有兩個公共字段(input_array和nElems),應將它們更改為private並在需要時創建acessor。
然后,要引用子類上的這些字段,可以使用protected
acessor(如果您希望對API的其余部分隱藏acessor),也可以使用public
(如果它是公共API的一部分)。 這樣,在您的ArrayClass上:
public class ArrayClass {
private int[] input_array;
private int nElems;
//this may be public
protected int[] getInputArray() {
return input_array;
}
當您調用mergeSort方法時,可以使用getInputArray()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.