Java四种访问权限修饰符的通俗理解。

Java语言的一大特性是封装。当把一些属性或者方法封装进了容器–类里面时候,产生这样一种需求,就是想针对不同的量或方法定义不同的访问权限,更加细粒度地维护一个类的封闭程度和私密程度。这个时候四种访问权限修饰符派上用场了。
通俗理解,四种访问修饰符类似于Linux系统中不同用户的权限等级。Linux系统中root用户拥有所有权限,类似Java类中的public修饰的类、方法、变量拥有被所有其他XX访问使用的权限。
下面列举了四种权限修饰符的作用范围:
从上到下被访问权限依次降低
V表示能够被访问,X表示不能被访问。
先明确类、包、子类、包外这四个相关指定访问范围的意义。
类----在类的内部;
包----在同一个包里面,类的外部;
如何界定在包内还是包外:栗子:比如classA在dir1/dir2/dir3下,而classB在dir1/dir2下,虽然都是dir2下,但是不是同一个包。要完全相同的前缀才是相同的包。这点和window界定是否在同一个文件夹下有区别。
子类----继承的类,可能在包里,也可能在包外;
包外----就是包的外部。

用通俗易懂的例子来解释比较容易:
1.假设某个类A,其中定义了public int a;
class A{
public int a;
}
那么在定义该变量a的类A里面可以访问该变量a;
在类A所在的包里面其他类也可以访问a;
A的所有子类可以访问a;
不拥有A类的其他包里面的类也可以访问a.

2.如果将a定义为protect int a ;
那么在定义该变量a的类A里面可以访问该变量a;
在类A所在的包里面其他类也可以访问a;
A的所有子类可以访问a;
不拥有A类的其他包里面的类不可以访问a.

3.如果将a定义为int a(也就是不加任何权限修饰符,默认就是default):
那么在定义该变量a的类A里面可以访问该变量a;
在类A所在的包里面其他类也可以访问a;
A的所有子类BU可以访问a;
不拥有A类的其他包里面的类BU可以访问a.

4.如果将a定义为private int a:
那么在定义该变量a的类A里面可以访问该变量a;
在类A所在的包里面其他类也BU可以访问a;
A的所有子类BU可以访问a;
不拥有A类的其他包里面的类BU可以访问a.

可见被访问权限逐渐降低。
其中注意public可以修饰类,但是protect不能修饰外部类。(内部类相当于变量。)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值