为什么当我阅读其他代码时,我经常看到广泛使用“全局变量”?
例如在Java代码中:
public class SomeClass {
Button btn1;
private void someMethod() {
btn = new Button();
}
}
btn1
被声明为“全局”和“方便”变量,可用作整个班级的轻松访问。但是当它没有修饰符时,它默认为Java中的默认访问。
这可能是安全隐患吗?如果他们只计划在一个特定的类中使用它们,为什么不立即用私有修饰符声明它们呢?
答案 0 :(得分:5)
它不是全局变量(Java中是否存在这样的东西?我想这取决于一个人对 global 的定义)。它仍然是一个集体成员。
The default visibility is package-private,因此该变量不是公共的,但可以被同一个包中的其他类访问。
通常情况下,应该努力实现“最佳”数据封装,但可能存在适当的用例。
答案 1 :(得分:3)
答案 2 :(得分:3)
这不是一个全局变量。它具有默认访问权限,因此它不是全局可见的,而且它是实例成员,这意味着它的作用域是SomeClass
的实例。与Java中的全局变量最接近的等价物是公共类中的公共静态字段。即使在这种情况下,它只是你正在使用的容器类的类加载器的全局 - 在同一个JVM中运行的另一个类加载器并加载相同的容器类将有一个单独的静态变量。
说完所有这些之后,我个人不赞成除了私人之外的任何领域,以帮助封装。 (当然,这并没有给你自己封装,但它只是一个开始。)字段是类的实现的一部分,它应该是可修改的,不会影响任何人只依赖于<这个类的em> API 。
答案 3 :(得分:1)
然而,将它们称为应该是这样的好习惯:所以如果它们应该是私有的,那么将它们设为私有。
答案 4 :(得分:1)
java中没有“global”这样的东西。只有公共,私有,受保护和默认。对于类变量,默认通常不赞成,因为它破坏了封装。
如果人们只计划在一个特定的课程中使用私人修改器,为什么不立即用私人修改器声明它们呢?
*因为他们无知/不关心/顽皮/外出来惹恼你+
*适当删除 +只有conspiricy理论家
答案 5 :(得分:1)
如果你的问题是
然后我的回答是:因为他们很懒惰。为什么不立即用私人修改器声明它们