java - 私有(private)字段并重写 getter 和 setter 方法

标签 java

我有一个像这样的抽象类:

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/

相关文章:

Java 在读取任何内容之前关闭 FileInputStream

java - 如何将特定文件类型拉入列表 Android Studio

java - Hibernate 4.0 的事务锁定问题

java - Spring security Oauth 2 使用ajax登录和表单登录

java - 没有代理就无法解决 Maven 依赖关系

java - 如何对java中ExecutorService内部的相似线程求和?

java - 加载时删除 webview 加载器

java - Maven:在每个项目中重复使用 POM 文件

c# - 我应该学习Java还是应该学习C++?

java - 使用 "=="时字符串比较失败?