Как мне создать некоторые объекты для хранения в ArrayList, который является атрибутом подкласса, из родительского класса в Java?

#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") );