我有一个像这样的抽象类:
public abstract class Block {
private boolean collided = false;
public boolean hasCollided() {
return collided;
}
public void markCollided() {
collided = true;
}
}
我有 4 个 Block 类的子类。这些类还需要接收碰撞变量。这意味着这两个方法应该被 Block 的 4 个子类覆盖。我怎样才能让它发挥作用?
如果我尝试覆盖它,它将显示错误,因为子类中不包含这样的变量。
如何在所有子类中接收碰撞变量?
另外,我创建了一个 block 类数组,该数组包含4个子类对象。是否可以在遍历数组时为每个对象的碰撞变量设置不同的值? 简而言之,碰撞变量对于数组中的每个对象可以是唯一的吗?
最佳答案
需要使用公共(public)方法hasCollided()、markCollided()
等,因为collided
是类Block
的私有(private)变量.
事实上,4 个子类扩展了 Block
,这并不意味着可以访问私有(private)字段。 Block 提供了公共(public) hasCollided,markCollided
来访问其私有(private)变量。
关于java - 私有(private)字段并重写 getter 和 setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47786309/