В java для каждого поля и метода вы должны объявить видимость. Это определит, кто может получить доступ к этому полю или этому методу. Видимость объявляется с помощью ключевого слова, которое является одним из следующих:
public
: доступ к полю или методу возможен из любого места
private
: только класс, в котором объявлено поле / метод, может получить к нему доступ
protected
: только класс и его подкласс могут получить доступ к полю / методу.
Существует четвертая видимость, называемая «видимость пакета», которая имеет место, когда не указано ключевое слово: к полю / методу можно получить доступ в том же пакете. Эта видимость используется не очень часто.
Вот небольшой пример:
public class A {
public int var2; // this is a public variable
protected int var3; // this is a protected variable
private int var1; // this is a private variable
public void test() { } // this is a public method
protected void test3() { } // this is a protected method
private void test2() { } // this is a private method
}
Вы можете видеть в моем маленьком примере, что у моего класса также есть видимость, те же самые правила, что и для полей и методов, используются только для создания экземпляров вместо доступности.
В вашем случае есть два разных решения, позволяющих получить доступ к вашему полю из подкласса:
- объявить поле как
public
, protected
или без видимости (т.е. видимость пакета)
- объявите поле как
private
и добавьте методы доступа setter, getter или другие. Это предпочтительный метод, и он называется инкапсуляция.
Поскольку это, вероятно, домашнее задание, я не буду предоставлять вам код, это будет хорошим упражнением, чтобы написать его самостоятельно.
PS: я знаю, что инкапсуляция - это нечто большее, чем просто то, что я объяснил, но удаление такого имени не повредит OP;)