Мне интересно, что происходит с объектными переменными в абстрактных классах Java. Например, если есть этот абстрактный класс:Абстрактные классы в 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
, который распространяется BaseClass
Мне нужно определить другой массив. Я не знаю, почему это так, и нужно ли это так? Надеюсь, вы понимаете, что я имею в виду. Например, я мог бы использовать BaseClass
второй раз для этого нормального класса:
public class ArrayClass2 extends BaseClass{
private int[] myNumbers;
public ArrayClass2(int length){
super(length);
}
public int getValue(int index){
if(!isOne(index))
return myNumbers[index];
else
return 1;
}
}
Я уверен, что вы уже прочитали о том, что означает 'private' на Java, но если нет - этот поиск может вам помочь - https://www.bing.com/search?q=java+private –