3

我最近开始使用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
4

4 回答 4

6

您的 main 在 Account1 类中,因此它仍在同一范围内。

可以从属于同一类型的任何代码访问私有变量。如果您的主要方法在一个单独的类中,那么它将无法访问它们(不使用反射)。

于 2010-02-08T21:39:24.270 回答
1

给定类的“main”方法是该类的一部分。作为类的一部分的方法可以访问该类的私有成员。这对我来说很有意义。当然,这并不一定意味着您应该使用它。

考虑它的一种方法是考虑一个班级对另一个班级内部运作的了解。我的 Person 类不应该知道我的 Order 类中发生了什么;它只是调用它的公共方法。但是 Person 内部的任何东西当然会知道 Person 的内部结构——甚至是 Person 的不同实例。

于 2010-02-08T21:39:15.627 回答
0

这是因为 main() 函数是该类的成员。它可以访问类的所有成员。

在现实世界的代码中,主要功能通常位于实际上引导其余代码的“线束”类中。这个工具类通常是非常轻量级的,并且会实例化其他做实际工作的类。

于 2010-02-08T21:40:14.177 回答
0

它们是私有的,因为它们只能由该类访问。这意味着它们可以从该类的静态方法(例如main)以及实例方法(例如showData)中访问。

该类的一个实例也可以访问该类的另一个实例的私有成员。

如果您有一个单独的类,例如 ,Account2它将无法访问Account1.

于 2010-02-08T21:39:25.157 回答