Как я могу получить доступ к переменным из другого класса JAVA - PullRequest
0 голосов
/ 23 февраля 2019

Итак, я разрабатываю программу для имитации системы сбора, и основная система принимает элементы, но есть различные типы элементов, такие как те, которые требуют проверки идентификаторов и т. Д. Я использую полиморфный метод для доступа к этим различнымклассы, однако, я могу изменить переменную из основного класса, основываясь на том, что происходит в методе, который обращается к другому классу.

EX:

itemCollection firstCollect = new itemCollection();
Item test = new AlcoholItem(5.94, false, 3.76. 0.06) // takes in weight, bulk, price, and sinTaxRate.

Допустим, я долженсохранить ожидаемый вес коллекции для всех не массовых элементов и иметь переменную в классе itemCollection, называемую объемной, как я могу использовать тот факт, что этот элемент не является объемным.Могу ли я из метода класса AlcoholItem, который является Полиморфным, я могу изменить объемную переменную itemCollection из класса AlcoholItem?

1 Ответ

0 голосов
/ 23 февраля 2019

Как я могу получить доступ к переменным из другого класса JAVA?

Как правило, вы хотите этого избежать и предпочитаете методы для этого: методы получения для получения значений и методы установки для установки значений из объектов других классов.

Могу ли я из метода Полиморфности класса AlcoholItem изменить массовую переменную itemCollection из класса AlcoholItem?

Добавление массового элемента не означает, что все элементы являются массовыми.Вы должны дать четкую семантику о поле bulk в ItemCollection.

Об обновлении веса для массовых предметов в коллекции, я бы сделал все по-другому, так как сбор предметов зависит отэлементы: когда вы добавляете элемент в коллекцию, проверьте, не является ли элемент объемным, если нет - обновите вес коллекции в соответствии с.
Как правило, вы хотите максимально избежать двунаправленной связи между классами / объектами.насколько это возможно.
Вы также должны определить метод boolean isBulk() в классе / интерфейсе элемента.

В ItemCollection классе add() может выглядеть следующим образом:

public void add(Item item){
   if (!item.isBulk()){
      weight += item.getWeight();
   }
   else{
       bulk = item.isBulk(); // as discussed check the relevance of this flag.
   }
   // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...