public class test2{
private  int a=1;
public  int c;
public void changav(){
a++;
}public static class test3 {
private int f=3;

}public static void main(String arg[]){
test2 d=new test2();
test3 p = new test3();
p.f=9;          //private 的怎么可以访问
d.changav();
d.a++;  //还有这个?
System.out.println(d.a);test2 g = new test2();System.out.println(g.a);
}}打印的答案:3 1

解决方案 »

  1.   

    还有class test3 和test2的关系?请高手帮助
      

  2.   

    是不是该这么理解,对于main的类,test3是test2的一个类变量,main是test2的一个方法。
    java的程序入口就从main开始。所以带main的类中的private 变量,main是可以访问的。
    和C,C++的东西混了,搞不清了。所以请哪位高手指点一下。
      

  3.   

    程序没有问题啊,p.f=9,f是有p去访问的啊,p是test2类的对象啊,当然能访问test2的域f啊,
     d.a这是是个 int 型啊,等于2,当然可以++啊
      

  4.   

    test3 p = new test3();
    p.f=9;          //private 的怎么可以访问d.a++;  //还有这个?
    你知道你的d实际就是一个test2的对象,这个当然就可以访问private了,private是指这个成员可以给包含这private的类的对象访问。
        你需要了解的是private的具体意义。private代表类A中的任何成员都可以改变这个private,但是如果出了这类A外面(例如你想通过在另一个类中创建一个类A的对象,然后通过这个对象直接修改private的成员就不允许了)。
        你前面创建的d和p都是在类里面的,所有你可以任意修给private,但是如果你不是在test2里面创建的话,而是在另一个类中创建,那你就不能直接访问private了,不过你可以通过一个public的方法间接访问修改private。
    test2和test3是外围类和内部类的关系。你应该找本书好好了解这些概念。
      

  5.   

    我跟你说说成员类吧
    JAVA支持在一个类中声明另外一个类,这种类称为内部类,并且这种类和外嵌类的每个实例都是相关联的。内部类有三种衍生体:成员类,本地类,匿名类。(具体区别看书去)这里的Test3就是Test2的一个成员类。
    如何类中的任何成员能够见到其他所有成员一样,内部类也可以引用其父类的所有成员(包括Private)。不过在使用内部类的方法之前,父类也必须首先声明内部类的实例(因为它不static地)