作用域(scope)

在Java语言中,变量的类型主要有3种:成员变量、静态变量和局部变量

  • 静态变量:不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配存储空间。因此可以通过类名.变量名来访问静态变量

  • 局部变量:作用域与可见性为它所在的花括号内

  • 类的成员:变量的作用范围同类的实例化对象的作用范围相同。当类被实例化的时候,成员变量就会在内存中分配空间,并初始化。
    直到类的实例化对象的生命周期结束时,成员变量的生命周期才结束。

作用域与可见性 当前类 同一package 子类 其他package
public
private × × ×
protected ×
default × ×

protected:表名成员变量或方法对该类自身,与它在同一个包中的其他类,在其他包中的该类的子类都可见

defaul:表明该成员变量或方法只有自己和与其位于同一包内的类可见。

变量作用域:

  • 方法内部除了能访问方法级的变量,还可以访问类级和实例级的变量。

* 块内部能够访问类级、实例级变量,如果块被包含在方法内部,它还可以访问方法级的变量。