gpt4 book ai didi

Java面向对象编程: referencing subclass object

转载 作者:行者123 更新时间:2023-12-02 05:12:11 28 4
gpt4 key购买 nike

我有一个ArrayClass并且mergeSortArray扩展了它。并且 mergeSortArray 包含一个 mergeSort() 方法。但是,由于我使用 super 从父类(super class)调用构造函数,所以我不知道如何引用 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);

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

public int[] input_array;
public int nElems;

它们可能应该受到保护并具有访问器方法(getters)。

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

关于Java面向对象编程: referencing subclass object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27240075/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com