我有一个这样的抽象类:
public abstract class Block {
private boolean collided = false;
public boolean hasCollided() {
return collided;
}
public void markCollided() {
collided = true;
}
}
我有4个Block类的子类。那些类还需要接收碰撞变量。这意味着这两个方法应该被Block的4个子类覆盖。我怎样才能使它工作?
如果我尝试覆盖它,它将显示错误,因为子类中不包含这样的变量。
如何在所有子类中接收碰撞变量?
另外,我创建了一个块类数组,该数组包含4个子类对象。在遍历数组时,是否可以为每个对象设置碰撞变量的不同值? 简而言之,colllided变量对于数组中的每个对象都可以是唯一的吗?
答案 0 :(得分:1)
您需要使用公共方法hasCollided(), markCollided()
等,因为collided
是类Block
的私有变量。
4个子类扩展Block
这一事实并不意味着可以访问私有字段。阻止提供公共hasCollided,markCollided
来访问其私有变量。
答案 1 :(得分:0)
您无法直接访问冲突变量,因为它是私有的。但 你可以使用超类的hasCollided()方法返回父类的碰撞变量。
public class subBlock {
public boolean hasCollided() {
return super.hasCollided();
}
public void markCollided() {
super.hasCollided()= true;
}
}