链表和继承问题



从子类创建一个对象并分配给一个名为 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);

收到意外的标识符错误,不确定我哪里出了问题?

父类的私有变量不是子类的一部分。在 ALink 中更改 next 的访问说明符,比如说受保护,那么它应该可以工作。

我不确定您在这里要实现什么,但是您的代码片段对我有用,没有任何问题。您在哪一行收到错误?

我用一个额外的 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

相关内容

  • 没有找到相关文章

最新更新