我想知道Java中的抽象类中的对象变量会发生什么。例如,如果有这个抽象类:
public abstract class BaseClass{
private int[] myNumbers;
public Baseclass(int length){
myNumbers = new int[length];
}
public boolean isOne(int index){
return myNumbers[index] == 1;
}
}
我有这个扩展BaseClass的真正的类:
public class ArrayClass extends BaseClass{
private int[] myNumbers; //i have to define it again?
public ArrayClass(int length){
super(length); //does this affect my array? I don't think so
}
public void setValue(int index, int value){
if(!isOne(index))
myNumbers[index] = value;
}
}
我想在我的BaseClass
中定义基本操作,并在我的正常ArrayClass
中执行其他操作。因为我需要array
BaseClass
,我必须定义一个在不同方法中使用它(显然)。
但在扩展ArrayClass
的{{1}}中,我必须定义另一个数组。我不知道为什么会这样,如果需要这样的话?我希望你明白我的意思。例如,我可以第二次使用BaseClass
这个正常的类:
BaseClass
答案 0 :(得分:1)
myNumbers
数组必须为protected
,而不是private
才能从子类中进行访问。
了解详情:https://www.tutorialspoint.com/java/java_access_modifiers.htm
答案 1 :(得分:0)
Java有四种访问类型。您可以阅读here。
如果要将基类中的字段公开给其子项,可以使用 protected 修饰符。