作用域(scope)
在Java语言中,变量的类型主要有3种:成员变量、静态变量和局部变量
静态变量:不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配存储空间。因此可以通过类名.变量名来访问静态变量
局部变量:作用域与可见性为它所在的花括号内
类的成员:变量的作用范围同类的实例化对象的作用范围相同。当类被实例化的时候,成员变量就会在内存中分配空间,并初始化。
直到类的实例化对象的生命周期结束时,成员变量的生命周期才结束。
作用域与可见性 | 当前类 | 同一package | 子类 | 其他package |
---|---|---|---|---|
public | √ | √ | √ | √ |
private | √ | × | × | × |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
protected:表名成员变量或方法对该类自身,与它在同一个包中的其他类,在其他包中的该类的子类都可见
defaul:表明该成员变量或方法只有自己和与其位于同一包内的类可见。
变量作用域:
- 方法内部除了能访问方法级的变量,还可以访问类级和实例级的变量。
* 块内部能够访问类级、实例级变量,如果块被包含在方法内部,它还可以访问方法级的变量。