【发布时间】:2010-05-12 20:31:11
【问题描述】:
我知道封装是将成员及其行为绑定在一个实体中。这让我觉得成员必须是私人的。这是否意味着具有公共成员的类不遵循 100% 封装规则?
谢谢
【问题讨论】:
标签: java oop encapsulation
我知道封装是将成员及其行为绑定在一个实体中。这让我觉得成员必须是私人的。这是否意味着具有公共成员的类不遵循 100% 封装规则?
谢谢
【问题讨论】:
标签: java oop encapsulation
封装既是数据捆绑,又是数据隐藏。 Java 允许您公开数据,但如果您选择这样做,您应该有一个很好的理由。默认情况下,成员变量应设为私有,并且仅在绝对必要时才提升为更高的可见性。
【讨论】:
这意味着内部字段(您希望封装在您的类中)应该是私有的,并且只能通过 getter、setter、属性等公开。隐藏和捆绑您的类的内部成员并通过您提供的某些方法控制访问特定框架 java (getters setters), .net (properties) etc 是封装。
回答你的问题,你为什么要实现封装?这样你就可以控制对你类的内部成员的访问。例如,如果您有一个整数字段,您只想将其设置为 1 到 10 范围内的值。如果您直接公开整数字段,则没有机制可以防止消费者设置超出您所需范围的值。但是,您可以通过封装通过 setter 或属性公开您的内部 int 字段来实现此目的,从而允许您在 setter 或属性中添加验证代码以“监管”为您的内部字段设置的值。
享受吧!
【讨论】:
正确。除非是最终值,否则不应公开类中的任何 数据/状态。
【讨论】:
差不多 - 如果您认为一个对象具有状态,那么现在任何人都可以在您不知情的情况下修改您的对象的状态。至少使用 setter 方法可以更好地控制对象的状态。
【讨论】: