Можно ли редактировать абстрактный класс?Джава - PullRequest
0 голосов
/ 24 октября 2018

У меня есть 2 класса.Один, который содержит частную хэш-карту для множества различных типов фруктов (этот класс называется fruitStore), а другой - абстрактный класс, который содержит собственный ArrayList строки в своем поле (этот класс называется fruitNames).

Ключом к HashMap в FruitStore является название каждого фрукта, в поле - информация о фрукте (цена и срок годности и т. Д.).

На данный момент моя цель состоит в том, чтобы поместить все ключи (имена фруктов) в ArrayList в fruitNames.

До сих пор я пытался создать еще один приватный строковый массив в fruitStore, называя его именами., а затем хранить все имена там.После этого я решил создать функцию в классе fruitNames для перемещения по всем именам фруктов.

Поэтому я создал следующий код в fruitNames

//making an object of fruit_store
private fruitStore fruit_store = new fruitStore();

void insert_fruit(ArrayList<String> fruits){
    for ( int i = 0; i < fruit_store.names.size(); i++ ){
    //here i planned to add the elements in names to the fruitList array
    }
}

Однако у меня возникла проблема.Поскольку имена ArrayList являются частными и доступны только в классе fruitStore, я не могу использовать его в любом другом классе.Мое единственное решение, которое я могу придумать, - обнародовать имена, однако мне сказали не делать этого.

Кто-нибудь знает способ решения этой проблемы?

Ответы [ 2 ]

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

Похоже, что вам было бы гораздо лучше объявить его защищенным.

"Частный модификатор указывает, что член может быть доступен только в его собственном классе. Защищенный модификатор указывает, что член может быть толькодоступ к нему внутри собственного пакета (как с package-private) и, кроме того, с помощью подкласса этого класса в другом пакете. "- Управление доступом к членам класса

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

Вы можете создать метод в классе fruitStore, который получит для вас размер, не раскрывая все поле

public int getSize(){
    return names.size()
}
...