【发布时间】:2013-08-26 22:59:03
【问题描述】:
类的公共成员如何在 java 中造成严重破坏?有人可以举例说明吗?我试图创造这样的情况,但未能成功。我只是发现它们等同于“受保护”访问修饰符。
【问题讨论】:
-
不需要将所有成员变量声明为私有或公有,这取决于应用程序。阅读programmers.stackexchange.com/questions/57491/…
类的公共成员如何在 java 中造成严重破坏?有人可以举例说明吗?我试图创造这样的情况,但未能成功。我只是发现它们等同于“受保护”访问修饰符。
【问题讨论】:
我相信这完全取决于您设计的应用程序/程序。
将成员声明为私有肯定有好处。
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);
}
希望这会有所帮助。
阅读以下文章;它应该对你有帮助。
【讨论】:
它允许无效值,破坏封装。
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.
}
这是关于封装好处的tutorial page on encapsulation in Java。引用:
类的字段可以设为只读或只写。
类可以完全控制其字段中存储的内容。
类的用户不知道该类如何存储其数据。一种 class 可以更改字段的数据类型,而 class 的用户可以 无需更改任何代码。
【讨论】: