oop Java:无法访问对象的元素
这是一个玩具的例子。所以,基本上我创建了一个ArrayClass对象。我在另一个类中实例化它。但我无法访问它的元素。我得到了这个错误:
error: array required, but ArrayClass found
我做错了什么
import java.util.*;
import java.io.*;
import java.math.*;
public class ArrayClass{
protected int[] input_array;
protected int nElems;
// multiple constructor
public ArrayClass(){
// nothing here
}
public ArrayClass(int max){
input_array = new int [max];
nElems = 0;
}
public void insert(int value){
input_array[nElems++] = value;
}
}
class ArrayApp{
public static void main(String[] args){
ArrayClass input_array = new ArrayClass(len);
for(int i = 0; i <= 10; i++){
System.out.println(input_array[i]);
}
}
# 1 楼答案
您正试图用
[]
检索数组元素,但ArrayClass不是数组。您需要公开input_array
,或者定义一个get方法来检索其内容,例如:# 2 楼答案
我的评论是正确的回答:
这不起作用,因为这里
input_array
是类ArrayClass
(而不是数组)的实例。只能像这样访问数组:array[i]
。因此,如果要从ArrayClass
访问阵列,可以执行以下操作之一:其中第一个
input_array
是ArrayClass
对象的实例,第二个input_array
是该类中的实际数组(它们具有相同的名称,因此可能有点混淆)。一般来说是myObject.array[i]
但是,当您定义这样的类时,最好不要允许访问类变量,而是提供相应的方法。所以你的班级可以是这样的:
现在可以像这样访问数组(例如在循环中):
建议提供这样的getter/setter方法,因为在这里您可以确保控制对数组的所有访问,并且不会发生任何“不好”的情况。想象一下,您会在
main
方法中编写类似的内容:然后
ArrayClass
中的数组将消失,并且您无法再保证ArrayClass
实例能够工作