关于访问修饰符和变量的作用域

时间:2021-01-24 21:06:33
关于访问修饰符。也就是用来控制其他的类对类、成员变量、成员方法的访问权限,我们有四种访问修饰符,分别是公共的(public),受保护(protected),缺省的和私有的(private),这四种权限能起到很好的保护作用。
public代表任何类在任何地方都可以对其进行访问。
protected代表只能在同一个包或者子类中才能进行访问
缺省即为系统默认,只能在同一个包才能进行访问
private代表只能在本类中才能进行访问

关于变量的作用域,主要分为四种:全局变量,成员变量,局部变量和块变量

全局变量也就是类变量,它在类定义后就会直接被分配内存空间,因此它能被任何的包直接进行访问;而成员变量只有在对象实例化得时候才能进行访问,因为成员变量只有在对象实例化的时候才会被分配内存空间;局部变量就是方法之中的变量;块变量的作用域最小,指的是在if,for里面定义的变量。
由此可知这四种变量的访问权限,全局变量可以直接在成员变量、局部变量和块变量中进行访问,成员变量可以直接在非静态方法中进行访问,在静态方法中访问就必须实例化。局部变量就只能在本方法中以及块中进行访问了,而块变量仅仅只作用于块中,出了这个块便不存在了。

这里就会提到一个关键字:this,它表示类的当前对象,只有在实例化的时候才会有用,它的作用是可以区分同名的变量,比如有一个类如下:
class Demo{
int a;
void Demo1(){
int a = 5;
this.a = a;
}
}
在Demo1方法里面,this.a就代表是成员变量,a就仅仅代表的是局部变量。


static表示的是静态的,也是全局的。,全局变量、方法能够在任何的类包中直接进行访问,不过还是要注意访问修饰符的类型。

不推荐用对象来访问静态方法和静态变量,因为里面的数值可能会被覆盖掉。