1

类的公共成员如何在 Java 中造成严重破坏?有人可以举例说明吗?我试图创造这样的情况,但未能成功。我只是发现它们等同于“受保护”访问修饰符。

4

2 回答 2

7

它允许无效值,破坏封装。

public class Clock {
    public int hours;
    public int minutes;
}

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

Clock clock = new Clock();
clock.hours = 42;
clock.minutes = 99;

使用 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.
}

这是关于封装好处的 Java 封装教程页面。报价:

  • 类的字段可以设置为只读或只写。

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

  • 类的用户不知道该类如何存储其数据。一个类可以改变一个字段的数据类型,并且类的用户不需要改变他们的任何代码。

于 2013-08-23T19:31:17.013 回答
0

我相信这完全取决于您设计的应用程序/程序。

将成员声明为私有肯定有好处。

But on the other hand,

如果您设计一个点类,用户将继承并使用它来绘制各种形状,正方形、矩形、圆形,您可能会考虑将成员 x、y、z 保持为公共。

例子:

class Point{

    public double x = 0.0;
    public double y = 0.0;
    public double z = 0.0;

}

这里的优势是;Rectangle、Square 类可以直接访问点

说;

class Square extends Point{

    private Point p;

    p.x = 4.0;
    p.y = 10.0;
    p.z = 0;

    // Instead of using double x = p.getX(); double p.setX(5.0);
}

希望这可以帮助。

阅读以下文章;它应该可以帮助你。

  1. 来源 1
  2. 来源 2
  3. 来源 3
于 2013-08-23T20:04:23.833 回答