2010-02-08 109 views
2

我最近开始使用JDK1.6学习Java。如果这是一个愚蠢的问题,请原谅。类中的私有变量可以从Java中的main访问?

如果私有变量可以通过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 

回答

1

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

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

5

您的主要位于Account1类中,因此它仍处于相同范围内。

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

+0

小心 - 术语“局部变量”可能会引起误解。 – finnw 2010-02-08 21:42:41

+0

@finnw好点。调整到“在同一范围内” – developmentalinsanity 2010-02-08 21:46:59

+0

你的第二句话也是误导。 'main'方法不在'Account1'的任何*实例*中。一个更正确的陈述将是“......私有变量可以通过任何在同一类型中定义的方法(或初始化程序)来访问”。 – 2010-02-08 22:52:27

0

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

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

如果你有一个单独的类,说,Account2,它不会是能够访问的Account1 provate成员。

0

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

在真实世界的代码中,主函数通常位于实际引导其余代码的“线束”类中。这个线束类通常非常轻量级,并实例化其他实际工作的类。

相关问题