1

我已经在我的脑海中阅读了有关stackoverflow的几个答案,但我的问题有点不同。我想知道的是对于不依赖于类的其他变量的变量,为什么我不能像我们在java中那样声明变量public然后直接访问变量?

我的意思是在目标 c 中,如果我有一个在类的接口中声明的变量,为什么我不能直接(不使其获取器和设置器)访问 self.variable 或 instanceofclass.variable.... ?

这就是我们通常在 java 和其他面向对象语言中所做的。

getter 和 setter 各有优势,但是当你做简单的事情时,如果你按照我上面提到的方式访问变量会不会更好。

PS:我对目标c很陌生,所以如果我们可以以我声称我们不能访问的方式访问变量,请原谅。我试过这样做,但有一个错误,因此我问,但这很可能是由于其他原因。所以再次请原谅。

先感谢您。

4

1 回答 1

2

因为它从根本上是错误的。如果您将成员变量公开为公开,则您将公开存储策略的内部细节,而客户端不应该知道这些细节。如果将来您想要实现智能策略(例如动态分配),或者甚至只是在每次访问变量时放置一个打印语句以用于调试目的,这将使您的生活变得更加困难。访问公共变量比调用方法的自由度要低得多,而且您必须做出选择,因为访问成员 var 和调用成员函数使用不同的语法,因此您将不得不到处修复代码。

这不是问题的唯一情况是当你有一个纯结构,一个类,其成员纯粹以一个集体名称保存和携带一堆数据,并且存储策略已经暴露于你随身携带的一堆数据。

于 2011-05-31T13:09:51.060 回答