Java中的抽象类及其对象变量

时间:2016-12-10 21:39:54

标签: java abstract-class

我想知道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

2 个答案:

答案 0 :(得分:1)

myNumbers数组必须为protected,而不是private才能从子类中进行访问。

了解详情:https://www.tutorialspoint.com/java/java_access_modifiers.htm

答案 1 :(得分:0)

Java有四种访问类型。您可以阅读here

如果要将基类中的字段公开给其子项,可以使用 protected 修饰符。