2013-09-24 90 views
1

我遇到了一件有趣的事情,涉及到Java的基础知识。 下面的代码:访问类中的私有字段

class Whoa { 
    private int n; 

    private void d() { 
    Whoa whoa = new Whoa(); 
    whoa.n = 1; 
    } 
} 

为什么领域对象的nwhoa是访问?我的意思是,我们在班上。但whoa是单独的对象,我认为我们只能访问当前对象的字段。虽然我承认,如果我们有需要哇参数的方法:

private void b(Whoa w) { 
    w.n = 20; 
} 

我们一定要n访问。这一切都很混乱。任何人都可以澄清这一点吗?

+3

是的,访问是在类级别上,而不是在对象级别上。 – Kayaman

+0

我承认这是有点奇怪,一个哇可以访问**另一个**的私人成员哇,但这只是私人的定义 –

+0

@Sikorski谢谢,我猜这个副本是选择正确的,但在我的例子中私人成员可以通过对象引用直接访问,而不是在公共方法中访问。 – iozee

回答

6

Java的访问修饰符点是保护类的内部代码,从国外到它。由于同一类的所有实例共享相同的内部代码,因此在实施它们之间的访问限制方面几乎没有用处。

这是Java的类级封装的基本原理

0

只要你在同一个班,你可以访问私有变量

0

对于您创建的Object'Whoa'的每个新实例,都会有一个'n'的实例。 'n'只能从'哇'(因此是私人的)实例中访问