Java四个访问权限
时间: 2024-07-10 12:00:17 浏览: 35
Java中的访问权限控制有四种,按照权限从大到小的顺序分别是:
1. **Public**[^1]:修饰的类、变量、方法对所有包内的类都是可见的,包括其他程序包。
2. **Protected**[^1]:主要用于继承,允许被同一包内的类以及其子类访问,但对外部包不开放。
3. **Default (包访问权限)**:也称为包内访问,仅限于声明该成员的包内的类能够访问,其他包则不可见。
4. **Private**:是最严格的权限,仅限于声明该成员的类内部使用,外部无法访问。
在Java类结构中,如示例所示,`OuterClass`中的`aa`变量是公共的,可以在任何地方访问;`bb`变量是受保护的,可以被该类自身和它的子类访问;`cc()`方法是默认包访问权限,只在当前包内可见;而`InnerClass`作为私有内部类,仅限于`OuterClass`类内部使用。
相关问题
Java自定义权限掩码
在Java中,自定义权限掩码(Custom Permission Masks)通常是在使用Java安全模型(Java Security Model)时,为特定操作或权限分配的一种抽象表示。这个模型用于控制代码运行时对系统资源(如文件、网络连接等)的访问权限。
在Java中,权限是由一组位(bits)组成的掩码,每个位代表一种特定的权限级别。例如,`java.lang.RuntimePermission` 类提供了一组预定义的权限,比如 `accessClassInPackage` 和 `setContextClassLoader`,它们都有自己的二进制掩码。
如果你需要自定义权限,你可以创建一个新的权限类,继承自 `java.security.Permission` 或其子类,比如 `BasicPermission` 或 `RuntimePermission`。然后,你需要为这个新权限定义一个名称和一个掩码字符串,该字符串通常是一个以`"permissionName=mask"`格式表示的字符串,其中`permissionName`是权限的类别名,`mask`是你自定义的二进制掩码。
例如:
```java
public class MyCustomPermission extends BasicPermission {
public MyCustomPermission(String name) {
super(name);
}
private static final String MASK = "00000001"; // 假设这是一个自定义的四位掩码,表示四种不同的权限级别
}
// 使用自定义权限
MyCustomPermission permission = new MyCustomPermission("myCustomAction");
System.out.println(permission.getName()); // 输出 "myCustomAction"
System.out.println(permission.getActions()); // 输出 "myCustomAction"
```
在实际应用中,可能需要在`Policy`或`PolicyProvider`中注册这些自定义权限,并在`SecurityManager`的检查方法中处理这些权限的验证。
4. 简述Java类成员的访问控制权限
Java类的成员访问控制权限分为四种,分别是public、private、protected和default。
1. public:public的成员可以被任何其他类的对象访问,无论这个对象是否在同一个包中。
2. private:private的成员只能被所在类的对象访问,其他任何类的对象都无法访问。
3. protected:protected的成员可以被所在类的对象访问,以及同一个包中的其他类的对象访问,以及其他包中继承了该类的子类的对象访问。
4. default:当一个成员没有明确地用public、private或protected修饰时,它就拥有默认访问权限。default访问权限的成员可以被同一个包中的其他类的对象访问,但是在其他包中无法访问。
需要注意的是,类的访问控制权限只对类的成员有效,对于类本身的访问控制权限,只有public和default两种,即只有public的类可以被其他包中的类访问,而default的类只能被同一包中的其他类访问。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)