为什么我们不能对 Java 类的方法内声明的变量使用访问说明符?
6 回答
因为没有意义。方法中声明的变量是方法的局部变量;即它们不能在方法之外访问。修改变量的声明会实现什么?
这样做是没有意义的。
局部变量(在方法中声明的变量)仅在该方法的范围内 - 将其声明为“公共”或“受保护”意味着什么?只有该方法中的代码才会知道它,并且您不会区分该方法中的不同代码位以允许某些部分访问变量而其他部分不可以。
访问修饰符只有在您想控制其他类如何使用它时才有意义。您想如何通过使用这些修饰符来控制对方法中变量的访问?在方法内控制变量的访问听起来绝对愚蠢,尤其是当变量范围仅在方法内时。一旦方法完成,变量将不存在。即使变量是从堆中分配的内存,一旦引用消失,内存仍可用于垃圾收集。
- 在方法、块或构造函数中声明的变量称为局部变量。
- 局部变量在方法/块内初始化,并在方法/块执行完成后销毁。
因此,为这些类型的变量指定访问修饰符没有任何意义。
根据 java 的规则,无论在方法范围内声明的变量不能在外部访问,这本身意味着变量本身是私有的、受保护的,如果没有指定,我们当然知道它的默认值。所以用上面提到的访问修饰符声明一个局部变量是没有意义的。但是,您仍然可以使用“final”访问修饰符,因为您不希望在 method() 过程中更改它,因为某些处理(例如不需要的值重新分配给变量等),
应用访问修饰符没有意义,因为局部变量访问范围仅限于方法范围。因此,应用访问修饰符没有任何意义。
class Foo{
public void stuff(){
private String x=2; //compilation error.
}
}
如果我们显式应用访问修饰符,上面的代码将无法编译。