包如何为类和接口提供安全性?

时间:2015-03-28 03:51:44

标签: java packages

在阅读java中的软件包时,我遇到了

中软件包的imp功能

java说

为类和接口提供安全性。所以外面的人不能 直接访问但如何? 我没有使用过这个功能,我很想知道它。

2 个答案:

答案 0 :(得分:1)

问题很模糊,但这是一种使用包提供安全性的方法......

如果变量受到保护,则只有它的子类和同一个包中的类可以访问它。如果您想要添加安全性,这可能很有用,因为您只能使添加到包中的文件能够访问类中的变量。

示例:

说我是否是银行计划。我有一个名为balance的受保护变量。如果变量是公开的,那么有人可以创建一个可以访问该类并改变平衡的程序,但是他们很高兴。但是由于它受到保护,只有我放在我的银行包中的文件才能访问变量来改变它。

答案 1 :(得分:1)

包不提供任何有意义的安全性。但是,它们确实通过“包私有”访问来帮助支持模块化:

package com.example;

public class Example {
    int someMethod() { ... }
}

someMethod的访问权限是包私有,这意味着它只对com.example包中的其他类可见。您可以以相同的方式控制字段,类和接口的可见性。

请注意,对于大多数Java应用程序而言,这不是一种可靠的安全机制。应用程序使用反射来解决大多数(如果不是全部)基于访问修饰符的访问限制很简单。阻止这种情况的唯一方法是在禁用反射API的安全沙箱中运行不受信任的代码。