0

在应该实例化的类中编写函数时,一些变量只是临时使用 - 例如作为for循环中的计数器 - 有些是全局变量,而另一些则返回和/或“存储”在对象的实例中作为instance.variable, instance->variable.. . 取决于语法。

我的问题是,object.variable =在所述函数中定义变量时我应该始终使用它,还是应该只在我打算返回它或使其可供用户使用时才使用它?

我不是专业人士,所以我不确定我是否以正确的方式看待它,但从我的角度来看,我应该使用其中一种或另一种的原因有几个,以及一些优点和缺点总是使用object.variable

variable

  • 如果范围应该只是定义它的函数,或者
  • 如果它是全局的(并且显然不是每个实例唯一的)。

object.variable

  • 如果它应该可供其他方法或用户访问。
  • 如果它应该对每个实例都是唯一的。

  • 它始终可以在您设置的范围内访问,从而消除可能的范围问题。
  • 它可能具有安全隐患。

我以正确的方式看待这个吗?

4

1 回答 1

1

您使用术语“变量”来指定三个不同的概念:

  • 函数中声明的变量是局部变量
  • 类中声明的变量是成员属性,或者是 实例变量
  • 在类(和静态)中声明的变量是类变量

局部变量只能从声明它的块中访问,无论是条件、循环还是函数。您的循环计数器变量应该是local,因为您不会在其他地方使用它。另外,它不能是属性,因为它与您的实例无关。

利用:variable

成员属性是绑定到实例的属性。它表征了它。因此,在您实例化对象之前,它不可用(并且不存在于内存中)。它在类内部声明,但在任何方法之外。您还必须精确它的可见性(公共、受保护、私有)。见封装

除非您有充分的理由,否则切勿将成员标记为公众。

可以在类之外以这种方式访问​​公共成员(无论是属性还是方法):

MyObject obj = new MyObject();
obj.myMethod();

例如,当您想在您的类中使用它时,可以从您的一种方法中使用variable. 但是,使用this.variable是一个好习惯:可以声明一个与属性同名的局部变量。如果你不坚持这个习惯,它可能会成为一场真正的噩梦。请注意,this关键字可能会因您使用的语言而异。

变量/方法独立于创建的任何实例而存在。它在您创建新实例之前就存在。无论存在多少类实例,都只会有一份副本。就像实例成员一样,您必须设置可见性。使用 是一个很好的习惯MyClass.member,无论是在课堂内还是课堂外。

我希望这能回答你的问题。

于 2013-04-14T04:17:28.320 回答