一个类的公共成员如何在java中造成破坏?

dga*_*002 1 java class public

一个类的公共成员如何在java中造成破坏?有人可以用例子解释一下吗?我试图创造这种情况,但不能成功.我只是发现它们等同于'protected'访问修饰符.

rge*_*man 7

它允许无效值,打破封装.

public class Clock {
    public int hours;
    public int minutes;
}
Run Code Online (Sandbox Code Playgroud)

然后,在不相关的代码中......

Clock clock = new Clock();
clock.hours = 42;
clock.minutes = 99;
Run Code Online (Sandbox Code Playgroud)

将它们与setter和getter方法保密,允许封装强制执行适当的值.

public class Clock {
    private int hours;
    private int minutes;
    public void setHours(int hours) {
        if (hours < 0 || hours > 23) throw new IllegalArgumentException("bad range");
        this.hours = hours;
    }
    // Likewise for "setMinutes" method.
}
Run Code Online (Sandbox Code Playgroud)

这是一个关于封装Java封装的教程页面.引用:

  • 类的字段可以是只读的或只写的.

  • 类可以完全控制其字段中存储的内容.

  • 类的用户不知道类如何存储其数据.类可以更改字段的数据类型,并且类的用户不需要更改任何代码.