Java 默认访问修饰符

使用默认访问(default access)修饰符声明的变量和方法,对同一个包内的类可见,包外的任何类(包括其子类)均不可见。

如下,Father类中的属性name是包内私有的:

 在同一包下的子类/其他类可见:

 

 在另一包下的子类/其他类中不可见,提示“……不为public,无法从外部软件包访问”:

 


 然而,在另一个项目的同名包中,却可以访问该包下的默认变量:

我把之间的项目打包导入到新的项目中,创建了一个同包名的软件包。Java就把它们当成一个包了,实际上当然并不是,这就破坏了包的封装性。


为了避免上面这种冒充的现象,Java有了运行时包的概念。由同一个类加载器加载属于同包的类组成了运行时包,决定两个类是不是同一运行时包要看它们的包名是否相同,还要看加载器是否相同。而只有属于同一运行时包的类才能访问默认权限修饰符的类和其成员。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值