一、java权限简介
java当中有4种访问修饰限定符privat、default(默认访问权限),protected以及public。只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。
private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显示地进行访问。
default(默认访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显示地调用该类的方法或变量。
protected:如果一个类的方法或者变量被protected修饰,对于同一个包的类,这个类的方法或变量是可以被访问的。对于不同包的类,只有继承于该类的类才可以访问到该类的方法或者变量。
public:被public修饰的方法或者变量,在任何地方都是可见的。
范围 | private | default | protected | public | |
---|---|---|---|---|---|
1 | 同一包中的同一类 | √ | √ | √ | √ |
2 | 同一包中的不同类 | √ | √ | √ | |
3 | 不同包中的子类 | √ | √ | ||
4 | 不同包中的非子类 | √ |
二、举例使用
1.private
在(1)中当变量age在Person类里定义时被private修饰时,在test1内部需要引用时就会报错。因为age超出了访问权限。而在图(2)当中在class内部的age(this.age指在Person内部的age)使用时可以正常使用。
2.默认权限(default)
没有被任何修饰符修饰的变量即是默认访问权限,该变量可以在该包里的任意类里使用,
3.protected
demo中的test2继承了demo1中的test1,而且a被protected修饰。尽管test2和test1不在同一包中,却可以在test1中访问a,刚好符合protected变量的最大访问权限。
4.public
被public修饰的变量在任何位置都可以使用。
注意
1.四种访问权限范围的大小从小到大:private<default(默认访问权限)<protected<public。
2.当定义变量时不加任何修饰会默认为默认权限。
3.在子类中访问父类中的变量时需要用super。