首页 > 其他分享 >访问修饰符问题

访问修饰符问题

时间:2023-02-04 22:14:06浏览次数:43  
标签:修饰符 System 同类 问题 访问 println public out

 

 

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

`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
受保护: 非同包、同类、子类 无法访问
默认: 非同包、同类 无法访问
私有: 非同类 无法访问
```

标签:修饰符,System,同类,问题,访问,println,public,out
From: https://www.cnblogs.com/GO8k/p/17092500.html

相关文章

  • 继承细节问题
      extends的意思是“扩展”,子类是父类的扩展Java中只有单继承,没有多继承继承是类和类之间的关系继承关系的两个类,一个是子类,一个是父类子类继承父类的......
  • 全局变量和局部变量使用问题
      在Java中变量类型有成员变量、局部变量和静态变量(类变量、static变量),本篇文章主要介绍成员变量(全局变量)和局部变量的区别。根据变量的作用范围,将程序中的变量分为......
  • 可变形参问题
    这篇文章主要介绍了Java语法糖之个数可变的形参的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学......
  • 重载和重写问题
    重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己......
  • 值传递和引用传递问题
    一、堆、栈举个栗子:intage=22;Stringname=newString("shuaibei");这两个变量存储图如下:如果,我们分别对age、name变量赋值,会发生什么呢?age=18;name=newSt......
  • 向上和向下转型问题
    Java中对象类型之间的类型转换(前提是两个类是父子关系)1.向上转型:把子类对象直接赋给父类引用,自动进行类型转换。​静态方法/成员变量(包括静态变量和实例变量)同“父类引......
  • StringBuffer和StringBuilder问题
    在Java中字符串属于对象,Java提供了String类来创建和操作字符串。String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至......
  • 解决vuepdf不显示章印问题
    找到node_modules/pdfjs-dist/es5/build/pdf.worker.js这个目录if(data.fieldType==="Sig"){data.fieldValue=null;//pdf预览不显示红章问题......
  • ChatGPT 有哪些神奇的使用方式?使用chargpt写代码 搜索问题 写论文
    本教程介绍chargpt使用教程:不需要梯子,不需要注册,也不需要缴纳费用通过本教程您将会使用chargpt写代码搜索问题写论文。我展示了两个问题问题一:用python写一个学生信......
  • nginx相关配置问题
    nginx常用功能http代理正向代理和反向代理Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,......