Java 访问修饰符
访问修饰符
访问修饰符是用于控制 类、成员方法、属性 的被访问权限。
Java
为我们提供了四种服务修饰符,分别是 public
、protected
、default
、private
声明:default
为不声明访问修饰符,就采用默认修饰符
它们的访问范围如下:
修饰符 | 名称 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|---|
public | 公开 | ✓ | ✓ | ✓ | ✓ |
protected | 受保护 | ✓ | ✓ | ✓ | |
default | 默认 | ✓ | ✓ | ||
private | 私有 | ✓ |
测试代码
包目录
A类
package com.java02_modifier;
public class AClass {
// 级别:公开 同类、同包、子类、不同包 可访问
public int publicNumber = 100;
// 级别:受保护 同类、同包、子类 可访问
protected int protectedNumber = 200;
// 级别:默认 同类、同包 可访问
int defaultNumber = 300;
// 级别:私有 同类 可访问
private int privateNumber = 400;
// 测试同类访问
public void function () {
String result = "公开:" + publicNumber + "\n受保护:" + protectedNumber +
"\n默认:" + defaultNumber + "\n私有:" + privateNumber;
System.out.println(result);
}
}
B类
package com.java02_modifier;
public class BClass {
// 异类访问测试
public void function () {
AClass aObj = new AClass();
System.out.println("公开: " + aObj.publicNumber);
System.out.println("受保护: " + aObj.protectedNumber);
System.out.println("默认: " + aObj.defaultNumber);
System.out.println("私有: 非同类 无法访问");
}
}
不同包下的类
package com.java02_modifier.packages;
// 异包需要导入
import com.java02_modifier.AClass;
public class PackageTest {
// 异包访问测试
public void function () {
AClass aObj = new AClass();
System.out.println("公开: " + aObj.publicNumber);
System.out.println("受保护: 非同包、同类、子类 无法访问");
System.out.println("默认: 非同包、同类 无法访问");
System.out.println("私有: 非同类 无法访问");
}
}
测试主方法
package com.java02_modifier;
public class ModifierMain {
public static void main (String[] ages) {
// 同包无需导入
AClass aObj = new AClass();
System.out.println("==========================同类访问测试=====================");
aObj.function();
BClass bObj = new BClass();
System.out.println("==========================异类访问测试=====================");
bObj.function();
System.out.println("==========================异包访问测试=====================");
com.java02_modifier.packages.PackageTest packObj = new com.java02_modifier.packages.PackageTest();
packObj.function();
}
}
运行ModifierMain
输出
==========================同类访问测试=====================
公开:100
受保护:200
默认:300
私有:400
==========================异类访问测试=====================
公开: 100
受保护: 200
默认: 300
私有: 非同类 无法访问
==========================异包访问测试=====================
公开: 100
受保护: 非同包、同类、子类 无法访问
默认: 非同包、同类 无法访问
私有: 非同类 无法访问
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析