Java, заполнение массивов и наследование - PullRequest
3 голосов
/ 06 апреля 2010

Я думаю, что сталкиваюсь с концептуальной стеной наследования с моими массивами Java. Я новичок в Java, поэтому, пожалуйста, скажите мне, если у меня есть вещи с ног на голову. По сути, я хочу сделать три вещи:

  1. Создайте массив runnersArray с атрибутами моего класса Runners.
  2. Заполните мой runnersArray, используя мой метод GenerateObjects моего класса GenerateObjects.
  3. Доступ к содержимому моего заполненного массива runnersArray в моем методе Evaluating моего класса Evaluating.

Похоже, проблема в том, что runnersArray невидим для методов, описанных выше в шагах 2 и 3, но их классы (по причинам проектирования) не могут наследовать или расширять класс Runners.

Заранее спасибо за любые предложения.

Вот несколько фрагментов кода, показывающих, что я пытаюсь сделать:

public class Runners extends Party {

    Runners[] runnersArray = new Runners[5];
}

и

public class GenerateObject extends /* certain parent class */ {

     public GenerateObject (int arrayNum) {
          runnersArray[arrayNum] = /* certain Runners attributes */;
     }
}

и

public class Evaluating extends /*certain parent class*/ {

     public Evaluating (int arrayNum) {
          System.out.println(/* String cast attribute of runnersArray[arrayNum]*/;
     }
}

1 Ответ

2 голосов
/ 06 апреля 2010

Как у вас есть в вашем примере кода, runnersArray является package-private (потому что не имеет спецификатора доступа, по умолчанию это закрытый пакет) экземпляра класса Runners. Таким образом, вы не можете просто получить к нему доступ из классов GenerateObject и Evaluating.

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

public class Runners extends Party {
    public static Runners[] runnersArray = new Runners[5];
}

Затем вы можете получить к нему доступ из других классов, например так:

public class GenerateObject extends /* certain parent class */ {
    public GenerateObject (int arrayNum) {
        Runners.runnersArray[arrayNum] = /* certain Runners attributes */;
    }
}

Надеюсь, это поможет.

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