我最近开始使用JDK1.6学习Java。如果这是一个愚蠢的问题,请原谅。
如果main()中的对象可以直接访问私有变量,它们如何“私有”?
public class Account1
{
private int accountNum;
private String name;
Account1() {
accountNum = 1101;
name = "Scott";
}
public void showData() {
System.out.println("Account Number: " + accountNum +
"\nName: " + name);
}
public static void main(String[] args) {
Account1 myA1 = new Account1();
myA1.showData();
System.out.println(myA1.accountNum); //Works! What about "Private"?!
}
}
给出了输出:
Account Number: 1101
Name: Scott
1101
答案 0 :(得分:5)
你的主要是在Account1类中,所以它仍然在同一范围内。
可以从属于同一类型的任何代码访问私有变量。如果你的主要方法是在一个单独的类中,那么它将无法访问它们(不使用反射)。
答案 1 :(得分:1)
给定类的“main”方法是该类的一部分。作为类的一部分的方法可以访问该类的私有成员。这对我来说很有意义。当然不一定意味着你应该使用它。
考虑它的一种方法是考虑一个班级对另一个班级内部运作的了解。我的Person类不应该知道我的Order类中发生了什么;它只是调用公共方法。但是Person内部的任何内容当然都会知道Person的内部结构 - 甚至是Person的不同实例。
答案 2 :(得分:0)
它们是私有的,因为它们只能由该类访问。这意味着可以从该类的静态方法(例如main
)以及实例方法(例如showData
)访问它们。
该类的一个实例也可以访问该类的另一个实例的私有成员。
如果你有一个单独的课程,比如Account2
,则无法访问Account1
的成员资格。
答案 3 :(得分:0)
这是因为main()函数是类的成员。它可以访问班级的所有成员。
在现实世界的代码中,main函数通常位于“harness”类中,该类实际引导其余代码。这个harness类通常非常轻量级,并实例化其他完成实际工作的类。