plotmehome 2025-04-19 23:00 采纳率: 33.3%
浏览 9

private 成员变量还是可以被修改

我已经将成员变量设置成了 private 为什么还是可以直接调用修改数值
这里将blood设置成了private 但是调用形参role.blood还是可以直接修改

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-19 23:00
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    private 成员变量仍然可以被修改

    你可能会认为,private 关键字可以保护成员变量不被外部访问和修改,但是实际上,这只是一个编译器级别的保护,而不是 runtime 级别的保护。

    在 Java 中,private 关键字只能阻止外部类访问和修改成员变量,但是不能阻止同一个类中的其他方法访问和修改成员变量。

    如果你想真正地保护成员变量不被修改,可以使用 getter 和 setter 方法来控制对成员变量的访问和修改。例如:

    public class MyClass {
        private int x;
    
        public int getX() {
            return x;
        }
    
        public void setX(int x) {
            this.x = x;
        }
    }
    

    在上面的代码中,我们使用 getter 和 setter 方法来控制对 x 成员变量的访问和修改。这样,即使你使用反射或其他方式访问和修改 x 成员变量,也不能直接修改它的值。

    如果你想完全地保护成员变量不被修改,可以使用 final 关键字来修饰成员变量。例如:

    public class MyClass {
        private final int x = 0;
    }
    

    在上面的代码中,我们使用 final 关键字来修饰 x 成员变量,这样就不能被修改了。

    评论

报告相同问题?

问题事件

  • 修改了问题 4月19日
  • 创建了问题 4月19日