【发布时间】:2014-07-04 08:11:54
【问题描述】:
如果 getter 最终是一个函数,为什么不只使用一个函数呢?我想在任何需要的时候强制使用该函数来设置/获取一个值,还有其他原因吗?
【问题讨论】:
标签: function class oop properties getter
如果 getter 最终是一个函数,为什么不只使用一个函数呢?我想在任何需要的时候强制使用该函数来设置/获取一个值,还有其他原因吗?
【问题讨论】:
标签: function class oop properties getter
属性仅用于提高可读性或简化 API,而不会破坏封装。例如,如果您有一个 Rectangle 类,并且您想将实例的宽度增加 10,而没有属性,您可以执行以下操作:
rect.setWidth(rect.getWidth() + 10)
虽然,使用属性,你可以写:
rect.width += 10
哪个更清楚。由于属性是函数,因此您可以进行所有需要的检查。此外,宽度是否实际存储在类中甚至都没有关系。也许矩形存储为一对点(即左上角和右下角),但属性会处理它。此外,您可以编写以不同方式访问相同数据的属性:例如,您可以拥有 width、height、top、bottom、left 和 right 属性,以及所有这些属性会影响类的相同内部数据,但会使其更易于使用和更具可读性。
【讨论】:
getter 是一个函数(就我所知的 POO 语言而言)。
这个想法是将修改或获取属性的能力按类委托给仅一个函数,以防在应用 getter 或 setter 之前需要执行特殊检查。
【讨论】: