私有字段并覆盖getter和setter方法

时间:2017-12-13 05:44:55

标签: java

我有一个这样的抽象类:

public abstract class Block {
    private boolean collided = false;

    public boolean hasCollided() {
        return collided;
    }

    public void markCollided() {
        collided = true;
    }
}

我有4个Block类的子类。那些类还需要接收碰撞变量。这意味着这两个方法应该被Block的4个子类覆盖。我怎样才能使它工作?

如果我尝试覆盖它,它将显示错误,因为子类中不包含这样的变量。

如何在所有子类中接收碰撞变量?

另外,我创建了一个块类数组,该数组包含4个子类对象。在遍历数组时,是否可以为每个对象设置碰撞变量的不同值? 简而言之,colllided变量对于数组中的每个对象都可以是唯一的吗?

2 个答案:

答案 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;
}
}