Java四种访问权限的简单解释

本文详细解析了Java中四种权限修饰符:private、default、protected和public的使用范围及应用场景,包括同一类、同一包、不同包子类及跨包访问的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

四种权限的范围

权限区别

1. private

表示只能在单个类中访问
如图所示,并且提示改更改为默认,默认不写就行,无关键字在这里插入图片描述

2. default(无关键字,留空即默认)

同一个包下的类都可以访问,这里t1包下面有三个类,分别是test1,test2,test3
它们三个类都属于同一个包下的类
在这里插入图片描述
在这里插入图片描述

3. protected

protected可以在不同包的子类中访问,权限更大一个级别

例如,在B包中的类b1继承了在A包中的类a1,这个类b1就叫做不同包的子类

在不同包子类中访问时,还需要将不同包中的类进行import引入才能进行继承,
因为它是另一个包中的类,所以要先引入,并且引入只能引入public类

这里引入t1包中的test2类,作为t2包中的k2类的父类,所以k2类可以成为不同包的子类
父类–t1包中的test2类
在这里插入图片描述
不同包中的子类–t2包中的k2类
在这里插入图片描述
这里不同包的子类中访问父类的数据必须用super关键字,jvm才能检测到你是在访问父类中的数据,直接访问会出错提示你改为public

4. public

若父类中全部为protected及其低级的权限,在这里插入图片描述
则这样在不同包的非子类k1中是不能够访问的,并且提示该为public
在这里插入图片描述
父类的test2的构造函数改完public后就可以访问了在这里插入图片描述

这里还要再总结一下,若自己写的程序不需要跨包访问直接默认就行了,
如果需要跨包访问,并且在另一个包中只需要用到父类来派生子类,直接用父类中已经有的数据成员还有方法,并且也不需要在派生子类中 创建父类的对象作为数据成员,用protected就足够了。但是若需要创建父类的对象作为 类中的数据成员的话就它的构造方法必须要用public了,这样才能创建父类的对象。 即protected只能访问不能新建父类的对象!

所以我们经常默认把类的构造方法权限写为public,表示我们在另一个包中需要用到另一个包中的父类,这样我们写的时候也容易创建父类的对象呀,干脆直接用最高权限,免得考虑太多麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值