#java #class #object #arraylist #initialization
#java #класс #object #arraylist #инициализация
Вопрос:
Итак, у меня есть 3 класса: Lair, LairLocation amp; Minion. Я создал ArrayList, который должен хранить объекты Minion, и это атрибут LairLocation. Я должен создать некоторые объекты для хранения в ArrayList из родительского класса Lair. Как LairLocation, так и Minion и подклассы Lair.
Всякий раз, когда я пытаюсь создать объекты для хранения в ArrayList от моего родителя, я продолжаю получать сообщение об ошибке «minion не может быть разрешен» и указание мне создать локальную переменную и т.д. Пожалуйста, помогите
LairLocation
'''
public class LairLocations extends Lair
{
public static ArrayList<Minion> minions = new ArrayList<Minion>();
}
'''
Lair
'''
public class Lair
{
public void createMinions()
{
minions.add("12", "Mine", "Me");//This is giving me the error
}
}
'''
Minion
'''
public class Minion extends Lair
{
private String id;
private String fName;
private String lName;
public Minion(String Id, String fName, String lName)
{
this.id = id;
this.fName = fName;
this.lName = lName;
}
}
'''
Ответ №1:
Вы пытаетесь получить доступ к полю подкласса из его родительского класса. Это не работает таким образом.
Вы можете получить доступ только к полям родительского класса (если они общедоступны или защищены).
Итак, вам нужно либо переместить свое minions
поле в родительский класс Lair
(и, кстати, сделать его нестатическим), либо получить доступ к этому объекту через класс LairLocation: LairLocation.minions()
(если поле должно быть статическим).
Кроме того, эта строка кода неверна: minions.add("12", "Mine", "Me");
add()
Метод принимает только один элемент.
Вероятно, это должно быть: minions.add(new Minion("12", "Mine", "Me"));
Ответ №2:
Вы должны вызвать new Minion()
, чтобы получить нового помощника.
minions.add( new Minion( "12", "Mine", "Me") );