наследование и объекты в ArrayList - PullRequest
0 голосов
/ 18 октября 2018

Хорошо.Я довольно новичок в этой Java-вещи, но я отчаянно пытаюсь учиться.Я столкнулся с чем-то вроде тупика.Я делаю программу инвентаризации как часть школы, и у меня есть предметы суперкласса с 4 переменными экземпляра.Нет проблем там.У меня есть 4 подкласса, два из которых являются обязательными классом Food, которые имеют еще 2 переменных и класс Nonfood, которые имеют еще одну переменную.Мои проблемы в этом.

Сейчас я работаю с ArrayList (это то, что я знаю до сих пор), но я серьезно рассматриваю возможность работы с картой или связанной картой.

Я основал свой ArrayList на своих элементах суперкласса, но у меня возникли проблемы с переносом переменных моего подкласса в мой ArrayList.Есть идеи, как это сделать.Используя относительно простые решения (помните, я новичок в этом)

Я еще не получил свой идентификатор.Я, в духе терминологии магазина, назвал его barCode.Это часть моего Суперкласса, и я не могу инициализировать его в своем основном классе.

//constructer from superclass

public Items (int barCode, String itemName, String itemSupplier, double itemPrice, int stock)
{
    this.itemName = itemName;

    barCode = GenerateBarCode();

    this.itemSupplier = itemSupplier;

    this.itemPrice = itemPrice;

    this.stock = stock;

// getter method for barCode

protected int getBarCode()
{
    return barCode;
}

// method for generating barcode

private int GenerateBarCode()
{
    Random barCode = new Random();    

    int barCode1 = barCode.nextInt(100000);
    return barCode1;
}

Если мне понадобится еще какой-нибудь код, дайте мне знать.Я работаю над тем, чтобы сделать его немного красивее.

1 Ответ

0 голосов
/ 18 октября 2018

В вашем конструкторе есть локальная переменная barCode, и она скрывает ваш элемент экземпляра, также называемый barCode.Параметры на самом деле являются локальными переменными, а локальные получают приоритет над полями.Эта локальная переменная получает случайное значение, а затем исчезает в конце конструктора, как и все локальные, оставляя ваше поле также называемым barCode с его исходным значением.

Вы можете исправить это, изменив параметр набыть вызванным barCodeIn или изменить оператор на this.barCode = GenerateBarCode()

Однако реальное решение состоит в том, чтобы удалить параметр barCode из конструктора элементов.

Поскольку вы генерируете его с помощью функции GenerateBarCode (), вам не нужно передавать его извне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...