在类中创建的对象可以访问私有字段..而在不同的类中创建的对象不是为什么?

时间:2011-06-25 17:36:06

标签: java

首先,我创建了一个名为PrivateShirt1的类,并在同一个类文件中创建该类的对象后调用了一个私有字段名称,并且它有效。

public class PrivateShirt1{
   private String name;

   public static void main(String args[]){               
       PrivateShirt1 s1=new PrivateShirt1();
       s1.name="hi";

       System.out.println(s1.name);    
   }
}

接下来我创建了一个名为PrivateShirt2的单独文件,其中我放置了PrivateShirt1的主方法,并执行了编译和调用它的功能。修改后,文件PrivateShirt1PrivateShirt2如下所示:

public class PrivateShirt2{ 

  public static void main(String args[]){               
     PrivateShirt1 s1=new PrivateShirt1();
     s1.name="hi";

     System.out.println(s1.name);    
  }


public class PrivateShirt1 {
   private String name;    
}

当我编译PrivateShirt2文件时,它给出了一个错误,即我试图调用的属性是私有的。

但是为什么在前面的例子中没有发生这种情况?我的意思是,在两种情况下都创建了对象,因此两者的规则应该相等,对吧?那为什么然后这个局部治疗呢?任何人都可以详细说明吗?

2 个答案:

答案 0 :(得分:0)

您需要查看java访问控制。 PrivateShirt1中的name变量具有私有访问权限。这意味着该字段只能从该类内部引用。 PrivateShirt2无权访问该字段。你第一次打电话的原因是因为它是在PrivateShirt1中调用的

http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 1 :(得分:0)

private修饰符表示您只能从类中的代码访问它。因此,您可以从private方法甚至是内部类访问static成员。