访问修饰符问题

 

 

访问修饰符是用于控制 类、成员方法、属性 的被访问权限。

`Java`为我们提供了四种服务修饰符,分别是 `public`、`protected`、`default`、`private` 声明:`default`为不声明访问修饰符,就采用默认修饰符

它们的访问范围如下:

| 修饰符 | 名称 | 同类 | 同包 | 子类 | 不同包 |
| :-------: | :----: | :--: | :--: | :--: | :----: |
| public | 公开 | ✓ | ✓ | ✓ | ✓ |
| protected | 受保护 | ✓ | ✓ | ✓ | |
| default | 默认 | ✓ | ✓ | | |
| private | 私有 | ✓ | | | |

## 测试代码

包目录

A类

java

```java
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类

java

```java
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("私有: 非同类 无法访问");

}

}
```

不同包下的类

 

java

```java
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("私有: 非同类 无法访问");

}
}
```

测试主方法

java

```java
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`输出

bash

```bash
==========================同类访问测试=====================
公开:100
受保护:200
默认:300
私有:400
==========================异类访问测试=====================
公开: 100
受保护: 200
默认: 300
私有: 非同类 无法访问
==========================异包访问测试=====================
公开: 100
受保护: 非同包、同类、子类 无法访问
默认: 非同包、同类 无法访问
私有: 非同类 无法访问
```

posted @   进击の埋  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示