Java中的作用域有哪些

时间:2022-06-05 06:07:46

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


 

首先说静态变量跟局部变量


 

静态变量不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配

存储空间。因此可以通过类名.变量名来访问静态变量


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


类的成员变量的作用范围同类的实例化对象的作用范围相同。当类被实例化的时候,成员变量就会在内存中分配空间,并初始化。

直到类的实例化对象的生命周期结束时,成员变量的生命周期才结束。

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

重点说一下protected和default:

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

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

若父类与子类处于同一包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类处于不同的package内,则没有访问权限


 

还有需要注意的是,这些修饰符只能修饰成员变量,不能修饰局部变量。

private和protected不能用来修饰类