类的公共成员如何在 Java 中造成严重破坏?有人可以举例说明吗?我试图创造这样的情况,但未能成功。我只是发现它们等同于“受保护”访问修饰符。
问问题
206 次
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);
}
希望这可以帮助。
阅读以下文章;它应该可以帮助你。
于 2013-08-23T20:04:23.833 回答