你如何在对象方法内访问对象属性?

7 浏览
0 Comments

你如何在对象方法内访问对象属性?

目前来看,这个问题不适合我们的问答格式。我们期望答案能够被事实、参考资料或专业知识所支持,但这个问题很可能会引发辩论、争论、投票或长时间的讨论。如果您认为这个问题可以改进并有可能重新打开,请 访问帮助中心 以获取指导。

在一个对象方法内访问对象的属性的\"纯粹\"或\"正确\"方法是什么? 这个方法不是getter/setter方法。

我知道在对象外部应该使用getter / setter,但在内部你会这么做吗:

Java:

String property = this.property;

PHP:

$property = $this->property;

还是你会这么做:

Java:

String property = this.getProperty();

PHP:

$property = $this->getProperty();

如果我的Java有些不正确,请原谅,自从我编写Java以来已经过了一年...

编辑:

似乎人们认为我仅在谈论私有或受保护的变量/属性。当我学习面向对象的编程时,我被教导要对每个属性使用getter/setter,即使它是公共的(实际上我被告知从不公开任何变量/属性)。因此,我可能从一开始就有一个错误的假设。似乎回答这个问题的人可能在说你应该有公共属性,而这些不需要getter和setter,这与我所学的以及我所说的相矛盾,尽管这可能也需要讨论。但这可能是一个不同问题的好话题...

admin 更改状态以发布 2023年5月23日
0
0 Comments

我个人认为保持一致是非常重要的。如果你有getter和setter,就要使用它们。我只有在访问器有大量开销时才会直接访问字段。这可能会让你的代码看起来不必要地臃肿,但在未来确实可以省去很多麻烦。经典例子:

以后,你可能想改变字段的工作方式。也许它应该实时计算,或者你想使用不同类型的后备存储。如果你直接访问属性,这样的改变可能会在快速膨胀的代码中导致大量错误。

0
0 Comments

这具有宗教性战争的潜力,但我认为如果你在使用getter/setter,你应该内部使用它 - 使用两个会导致以后的维护问题(例如,有人向setter添加需要每次设置属性时运行的代码,而该属性在不调用该setter的情况下被设置内部)。

0