java - 您将如何从对象方法中访问对象属性?

标签 java php oop theory

从不是 getter/setter 方法的对象方法中访问对象属性的“纯粹”或“正确”方法是什么?

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

Java:

String property = this.property;

PHP:

$property = $this->property;

或者你会这样做:

Java:

String property = this.getProperty();

PHP:

$property = $this->getProperty();

如果我的 Java 有点偏离,请原谅我,我已经一年没有用 Java 编程了......

编辑:

似乎人们认为我只是在谈论私有(private)或 protected 变量/属性。当我学习 OO 时,我被教导为每个属性使用 getter/setter,即使它是公共(public)的(实际上我被告知永远不要将任何变量/属性公开)。所以,我可能是从一开始的错误假设开始的。似乎回答这个问题的人可能会说你应该拥有公共(public)属性,而那些不需要 getter 和 setter,这与我所学的内容和我所说的内容背道而驰,尽管也许这需要讨论为出色地。不过,对于不同的问题,这可能是一个很好的话题......

最佳答案

这具有宗教 war 的潜力,但在我看来,如果您使用的是 getter/setter,那么您也应该在内部使用它 - 两者都使用会导致以后的维护问题(例如,有人将代码添加到需要在每次设置该属性时运行的 setter,并且该属性在内部设置而没有调用该 setter)。

关于java - 您将如何从对象方法中访问对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/126/

相关文章:

java - Oracle 无法存储表情符号

php - 获取父+子 WordPress 分类名称/Slugs

php - HTMLPurifier 中图像标签的宽度/高度属性允许使用 'auto' 值

c# - Dictionary<string,object> 是将未知变量集合传递给构造函数的最佳方式吗?

java - 将指针传递给指针以通过 JNA 从 Java float 到 C 动态库

java - Android:如何在创建列表时禁用列表项

linux - Linux 的面向对象 shell?

c# - 为什么泛型 ICollection 不在 .NET 4.5 中实现 IReadOnlyCollection?

java - 正则表达式获取两个下划线之间的单词

javascript - 如果没有选中任何复选框,则显示错误消息 - Laravel