使用属性而不是公共变量是否有任何优势?

时间:2011-06-14 08:23:04

标签: actionscript-3 properties field accessor

这可能是一个非常愚蠢的问题,但无论如何我都要问它。我大约一个月毕业,在学习期间,我一直被教导使用属性而不是公共变量。

所以我开始想知道它的优势是什么,我必须说在某些情况下,我根本没有任何线索。当然,在设置属性或获取属性时需要执行其他逻辑时很方便,但在获取/设置变量时使用属性是否有任何优势?我的意思的一个例子如下所示(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吗?

2 个答案:

答案 0 :(得分:5)

如果你只使用公共getter和public setter包装对私有变量的访问,而没有进一步的要求来设置或获取变量,你可以使用公共属性。

如果你想稍后从你的班级继承,你应该考虑使用getter和setter,并且可能能够以其他方式扩展它,你当前没有想到。

答案 1 :(得分:2)

取决于语言以及您的代码是否被其他代码用作二进制组件。如你所说,如果你需要执行一些额外的逻辑,你需要getter / setter,并且将来可能需要这样做。所以问题是,如果需要,你可以将公共变量更改为getter / setter吗?

例如,在.net中,属性的二进制签名与公共字段的签名不同。因此,如果不重新编译使用者代码,则无法将字段更改为属性。这对于组件通常是不可接受的,因此最好先使用属性。 (不确定它在AS中是如何工作的。)

但是如果你的代码没有被用作组件但只是作为同一个编译单元的一部分使用它并不重要。只需保持简单,并在需要时将var更改为属性。