Проблема со связанными списками и наследованием - PullRequest
0 голосов
/ 17 сентября 2018

Создайте объект из дочернего класса и назначьте переменную с именем theenemy

Создайте второй объект из дочернего класса и назначьте переменную с именем enlink2

Вызвать унаследованный метод 'set' первого объекта и передать ему ссылку на второй объект

Вызвать унаследованный метод 'set' второго объекта и передать ему ссылку на первый объект

public class ALink {

private ALink next;

public void setNext(ALink x) {

next = x;

  }

public ALink getNext (  ) {

return next;

    }

 }

public class Zombie extends ALink  {

private int attackmode;

public void set_attackmode(int  am) {

attackmode = am;

 }

public int get_attackmode (  ) {

return attackmode;

   }

}

Вот мой ввод

Zombie theenemy = new Zombie();

Zombie enlink2 = new Zombie();

theenemy.setNext(enlink2);

enlink2.setNext(theenemy);

Получает неожиданную ошибку идентификатора, не уверен, где я ошибся?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

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

Я попробовал ваш код с помощью одного дополнительного оператора Sysout и получил правильный вывод:

    public class ALink {
    private ALink next;

    public void setNext(ALink x) {
        next = x;
        System.out.println("setNext is  called for " + x.getClass().getName());
    }

    public ALink getNext() {

        return next;

    }
}

public class Zombie extends ALink {

    private int attackmode;

    public void set_attackmode(int am) {
        attackmode = am;
    }

    public int get_attackmode() {
        return attackmode;
    }

}

public class TestZombie {
    public static void main(String[] args) {
        Zombie theenemy = new Zombie();

        Zombie enlink2 = new Zombie();

        theenemy.setNext(enlink2);

        enlink2.setNext(theenemy);
    }
}

Получение следующего вывода:

setNext is  called for Zombie
setNext is  called for Zombie
0 голосов
/ 17 сентября 2018

Закрытые переменные родительского класса не являются частью подклассов. Измените спецификатор доступа next в ALink, скажем, защищенный, тогда он должен работать.

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