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