问题描述
|
这可能是一个非常愚蠢的问题,但无论如何我都必须问。我即将毕业大约一个月,在学习期间,我总是被教导要使用属性而不是公共变量。
因此,我开始怀疑优势是什么,我必须说,在某些情况下,我一点都不知道。当然,在设置属性或获取属性时需要执行一些其他逻辑时,这很方便,但是仅获取/设置变量时使用属性有什么好处吗?下面是我的意思的一个示例(As3)。
private var _myVariable:SomeClass;
public function get myVariable():SomeClass{
return _myVariable;
}
public function set myVariable(value:SomeClass):void{
_myVariable = value;
}
因此,请重复并阐明我的问题:像这样对我的getter / setter进行编程有什么好处,还是可以将变量更改为public并删除getter / setter?
解决方法
如果仅使用public getter和public setter来包装对私有变量的访问,而无需进一步设置或获取变量,则可以使用公共属性。
如果您想稍后从类继承,则应该考虑使用getter和setter,并且可能能够以其他方式扩展它,而您目前还没有考虑过。
, 取决于语言以及您的代码是否被其他代码用作二进制组件。如您所说,如果您需要执行一些额外的逻辑,则需要使用getter / setter方法,并且将来可能会需要这种方法。所以问题是,如果需要,您可以将公共变量更改为getter / setter吗?
例如,在.net中,属性的二进制签名不同于公共字段的签名。因此,如果不重新编译使用者代码,就无法将字段更改为属性。通常对于组件来说这是不可接受的,因此最好从使用属性开始。 (不确定它在AS中如何工作。)
但是,如果您的代码不用作组件,而仅用作同一编译单元的一部分,则没关系。只要保持简单,就可以在需要时将var更改为属性。