关于封装的问题

时间:2010-05-12 20:31:11

标签: java oop encapsulation

我知道封​​装是将成员及其行为绑定在一个实体中。它让我觉得成员必须是私人的。这是否意味着具有公共成员的班级不遵循100%封装规则?

由于

4 个答案:

答案 0 :(得分:6)

封装既是数据捆绑又是数据隐藏。 Java允许您公开数据,但如果您选择这样做,您应该有充分的理由。成员变量应作为默认设置为私有,并且只有在绝对必要时才会提升到更高的可见性。

答案 1 :(得分:3)

这意味着内部字段(您希望封装在您的类中)应该是私有的,并且只能通过getter,setter,property等公开。隐藏和捆绑类的内部成员并通过您提供的某些方法控制访问特殊框架java(getters setters),. net(properties)等是封装。

要回答你的问题,你为什么要实现封装?这样你就可以控制对你班级内部成员的访问。例如,如果您有一个整数字段,您只想将其设置为1到10之间的值。如果直接暴露整数字段,则没有任何机制可以阻止消费者设置超出所需范围的值。但是,您可以通过封装来实现此目的,方法是通过setter或属性公开内部int字段,从而允许您在setter或属性中添加验证代码,以“警告”将哪些值设置为内部字段。

享受!

答案 2 :(得分:0)

正确。除非它是最终值,否则不应暴露类中的数据/状态

答案 3 :(得分:0)

差不多 - 如果你认为一个对象有状态,现在任何人都可以在你不知情的情况下修改对象的状态。至少使用setter方法,您可以更好地控制对象的状态。