java中变量的命名实践。为什么 class 变量不是包变量

naming practice of variables in java. why class variable not package variable

我很好奇为什么 class 变量(即带有 static 关键字的变量)被称为 class 变量而不是包变量。我的意思是,如果我在一个 class 中声明一个静态变量,我可以从同一个包中的另一个 class 访问这个变量,只要它不是私有的。

此外,实例变量在 class 中声明,class 中的方法可以访问实例变量,为什么不将它们命名为 class 变量...我只是不明白了。

它被称为 class 变量,因为它在 Class 中。可见性在命名约定中无关紧要。 非静态变量是实例变量,因为它在 class 的实例之间可能不同。方法在 class.

的所有实例中始终相同

因为包由一起工作的 classes 组组成,而 classes 是构成实现中对象的抽象。您不能让变量纯粹作为包变量存在,因为它不会提供 class "owns" 变量的上下文。另外,它只是糟糕的面向对象编程。

class 基本上是创建实例(对象)的框架或蓝图。静态变量和方法在框架内定义,并在 class 由 ClassLoader 加载时创建,因此无需创建实例即可存在。这就是为什么它们是 class 个变量。它们不是包变量,因为它们专门属于 class。 IE。您可以通过调用 MyClass.myVariable.

来访问它们

实例变量仅在 class 的实例(即通过调用 new() 创建的对象)时才存在,并且它们特定于该对象而不特定于 class。实例变量的计数与创建的 class 对象的数量一样多,而静态 class 变量始终只有一个计数。这就是它们被称为实例变量的原因,因为它们特定于实例而不是 class。