gpt4 book ai didi

oop - 封装。精心设计的类

转载 作者:行者123 更新时间:2023-12-04 16:36:53 31 4
gpt4 key购买 nike

今天我读了一本书,作者写道,在一个设计良好的类中,访问属性的唯一方法是通过其中一个类方法。这是一个被广泛接受的想法吗?为什么封装属性如此重要?不做会有什么后果?我早些时候在某处读到这可以提高安全性或类似的东西。 PHP 或 Java 中的任何示例都会非常有帮助。

最佳答案

Is it a widely accepted thought?



在面向对象的世界中,是的。

Why is it so important to encapsulate the attributes? What could be the consequences of not doing it?



对象旨在成为包含数据和行为的内聚实体,其他对象可以通过公共(public)接口(interface)以受控方式访问这些数据和行为。如果一个类没有封装它的数据和行为,它就不再能够控制被访问的数据,并且不能履行它与公共(public)接口(interface)隐含的其他对象的契约。

这样做的一个大问题是,如果一个类必须在内部进行更改,那么公共(public)接口(interface)就不必更改。这样它就不会破坏任何代码,其他类可以像以前一样继续使用它。

Any example in PHP or Java would be very helpful.



这是一个 Java 示例:
public class MyClass {
// Should not be < 0
public int importantValue;
...
public void setImportantValue(int newValue) {
if (newValue < 0) {
throw new IllegalArgumentException("value cannot be < 0");
}
}
...
}

这里的问题是因为我没有封装 importantValue通过制作 private除了公开之外,任何人都可以出现并绕过我在 setter 中放置的检查,以防止对象具有无效状态。 importantValue应该永远不会小于 0,但是由于缺乏封装,所以无法阻止它。

关于oop - 封装。精心设计的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982844/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com