public class ModifierTest1
{
public static void main( String[] args ) 
{
A a = new A();
//System.out.println(a.s);
a.f();
}
}class A
{
private int i;
private String s;

public A()
{
i = 123;
s = "hello";
}

public void f()
{
A a = new A();
System.out.println(a.i + a.s );
}
}
为啥f()中创建的对象能直接使用使用a.i和a.s,私有还能这么用?在main函数中这么做却不行?

解决方案 »

  1.   

    private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,即便是子女或朋友都不可以使用。f()可以调用a.i 是处在同一个class中,main方法到另一个class中了,故不能调用到。将main方法写在同private变量定义的同一个类中就可以通过.变量名来访问了
      

  2.   

    私有变量即自己拥有访问权,自己类体内都可以访问,void f()是本身的方法  当然可以进行访问,如果自己的方法都不能访问的话,试问定义这么个都不能访问的变量有什么意义呢?
      

  3.   

    私有就是 自己class内部的可以访问
      

  4.   

    如果在别的类里面还能够访问,那private还有何意义,但是如果在自己类里面都不能访问的话,那private就更加没有意义了。
      

  5.   


    private 意思是只有本类成员才能访问!f()方法和那几个私有变量都是在一个类中的,当然可以访问了!
    还有就是main方法,你的main方法因为在其他方法中了,是无权访问类A中的私有变量的!
    如果你在类A中也定义了main方法,还是访问不到私有变量,这是因为main方法是静态方法,不能访问非静态成员变量和非静态方法的!
      

  6.   

    用一个图来说private,我想聪明的你能够理解吧。
      

  7.   

    请看private,public修饰变量的区别
      

  8.   

    你把main函数放在class A中也是可以访问的,private:只对这个类可见。你在其它的类中除了用反射,没法访问私有成员变量
      

  9.   

    你这是在类内部访问私有成员呀,如果你在main函数中直接调用A类的私有成员的话,那就不行了