提问人:Sarthak Mittal 提问时间:7/20/2021 更新时间:7/20/2021 访问量:223
如何在 Java 中的包私有声明中破坏封装
How can be encapsulation broken in package-private declarations in Java
答:
3赞
Tim Hunter
7/20/2021
#1
你可以通过一个小例子来了解这意味着什么。
在这里,我们有一个带有一些可见性变量的类,即不使用 visibility 关键字时应用的可见性。package-private
package insider;
public class PrivateClass {
static int var1 = 10;
static String var2 = "Secret";
}
在这里,我在另一个包中有一个类。这将引发变量的不可见性错误。
package outsider;
import insider.PrivateClass;
public class OutsiderClass {
public static void outsider() {
System.out.println(PrivateClass.var2 + " " + PrivateClass.var1);
}
}
在这里,我有一个类与我们的变量类位于同一包中。这在访问变量时不会引发错误。package-private
package insider;
public class InfiltratorClass {
public static void infiltrator() {
System.out.println(PrivateClass.var2 + " " + PrivateClass.var1);
}
}
文件结构概述:
insider
PrivateClass
InfiltratorClass
outsider
OutsiderClass
评论
0赞
Sarthak Mittal
7/20/2021
因此,外部类可以使用 InfiltratorClass 渗透器方法来获取包专用可见性变量的访问权限。我做对了吗?在这里,我们可以创建一个 InfiltratorClass,但当我们使用外部库时。那么我们无法创建 InfiltratorClass,因此在这种情况下无法破坏封装?
1赞
Tim Hunter
7/20/2021
@SarthakMittal 是的,例如,您可以使用方法直接编辑值。使用外部库并非不会被篡改,但正确使用关键字可以防止在一般用例中访问变量。InfiltratorClass
setVar1()
private
InfiltratorClass
评论