gpt4 book ai didi

oop - 封装的对象应该是公共(public)的还是私有(private)的?

转载 作者:行者123 更新时间:2023-12-04 20:54:24 26 4
gpt4 key购买 nike

对于将类中的所有成员设为私有(private)并使用公共(public)方法来处理突变的想法,我有点不清楚。原始类型不是问题,它是我不清楚的封装对象。将对象成员设为私有(private)的好处是能够隐藏不适用于正在构建的类的上下文的方法。缺点是您必须提供公共(public)方法来将参数传递给底层对象(更多方法,更多工作)。另一方面,如果你想让底层对象的所有方法和属性都暴露出来,你不能把对象公开吗? 以这种方式暴露物体有什么危险?

例如,我会发现将向量或数组列表中的所有内容都暴露出来是很有用的。我能想到的唯一缺点是公共(public)成员可能会分配一个类型,它不是通过隐式强制转换(或其他影响)。一个易变的指定会减少问题的可能性吗?

只是一个旁注:我知道真正的封装意味着成员是私有(private)的。

最佳答案

What are the dangers in having objects exposed this way?



更改这些对象的类型需要更改类的接口(interface)。使用私有(private)对象 + 公共(public) getter/setter,您只需要修改 getter 和 setter 中的代码,假设您想要保持返回的东西相同。

请注意,这就是为什么属性在诸如 Python 之类的语言中很有用的原因,从技术上讲,它没有私有(private)类成员,最多只有隐藏的成员。

关于oop - 封装的对象应该是公共(public)的还是私有(private)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298390/

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