类中的方法当然能访问自己类的数据成员了。
例子:
class test{
    private int data;
    public int getDate()
    {
        return data;
    }
}
只不过你的方法特殊一点,但是还是这个道理

解决方案 »

  1.   

    我还是不明白??在c++中通过main函数这样访问是错的.class A{
        private int data;
        
        public A(int i)
        {
           data=i;
        }
    };
    void main()
    {
        A a=new A();
        a.i=1;    
    }
      

  2.   

    我还是不明白??在c++中通过main函数这样访问是错的.class A{
        private int data;
        
        public A(int i)
        {
           data=i;
        }
    };
    void main()
    {
        A a=new A(9);
        a.i=1;    
    }
      

  3.   

    楼主,难道在:
    class A{
    private int data=1; public static void main(String[] args){
    A a=new A();
    System.out.println(""+a.data);
    }
    }
    里面,public static void main(String[] args)这个方法不是属于类A的吗?
    虽然MAIN是一个静态的主函数,默认直接运行,但还是CLASS A中的一个方法啊,
    所以当然可以访问自己的私有变量了。一定要注意,这里MAIN不是独立存在的,它属于CLASS A。C++和JAVA没有可比性,要是2个都一样,那干嘛一个叫JAVA一个叫C++?都叫JAVA或者C++或者A++多干脆?
      

  4.   

    对不起!!以上有错误我还是不明白??在c++中通过main函数这样访问是错的.class A{
        private int data;
        
        public A(int i)
        {
           data=i;
        }
    };
    void main()
    {
        A a=new A(9);
        a.data=1;    
    }
      

  5.   

    java 是纯脆的面向对象语言。在 java程序中所有的函数是某个类的成员函数,当然main()
    函数也不例外。不过main()方法是个特殊的成员函数,它既是java程序的入口(在这一点上和
    C++程序类似 注意:只是类似),又必需以某个类的成员函数的形式出现。作为该类的成员函数,它当然可以调用该类的任何成员变量及成员函数。
    C++语言不是纯脆的面象对象语言,它也有面向过程的部分。它的main()函数不属于任何一个类。所以在C++中main()函数不能调用任何类的私有成员和保护成员。
      

  6.   

    上面的是因为main这个函数是在类的外面,所以当然不能访问其他类的函数了。
    你用java写的main是在类的里面
    是因为这个区别
      

  7.   

    如果学习面向对象,java最合适啦!
    类中的方法能访问自己类的private数据成员。
      

  8.   

    class A
    {
       private int data=1;
       public  A changeData()
      {
          A a=new A();
          a.data=0;
          return a;      
       }
    }
    class B
    {
    public static void main(String[] args)
            {
       A b=new A();
                A a=b.changData();
       
            }
    }这样不是用对象b的直接改变了对象a的private
      

  9.   

    楼上没有理解,关键在于,你在B里面访问到A的私有变量了吗?你是通过A的方法访问到的。
    照你的理论,私有变量不如谁都不让访问好了。
    关键你没有理解这么做的原理,有时间好好看书的好。
    简单的给你说下你的例子,
    比如,你现在是通过A a=b.changData();来使 a的内部的私有变量值变成了0,
    但是你想过没有,无论你外部怎么调用b.changData(),它只是表明了一个动作,
    而这个时候,你是可以根据需要随时改变
    public  A changeData()
      {
          A a=new A();
          a.data=0;
          return a;      
       }
    这个方法的,比如:
    public  A changeData()
      {
          A a=new A();
          a.data=100000;
          return a;      
       }
    怎么样,我改了私有变量的初始化值,而外部任何类都不知道这件事发生了。
    而且我还可以写其它方法:
    public void init() {
        data=0;
    }
    而有一天,我在重构程序过程中发现,可以把 data这个私有变量去掉了,用不着它了,
    这个时候我只要改我A这个类就可以了,不会影响到B,因为B根本不知道有data这个变量存在。这个就是最简单的所谓封装性。
    罗嗦了一堆,其实任何一本入门书都有讲更清楚的吧,建议学学。
      

  10.   

    main()方法是属于这个类本身得
    自己得方法当然可以访问自己得变量
      

  11.   

    说说我的理解,劳尔的思路还是挺好的。
    “这样不是用对象b的直接改变了对象a的private“
    但是我觉得你最后还是用A的方法,改变了A的private。
    private也是对类而言的,不是对对象。
      

  12.   

    A a=b.changData();
    相当于有复制了一个b.
      

  13.   

    类自己的方法当然能访问自己的私有数据了.
    你说的情况是在多个类调用的情况.
    class a{
      public static void main(String[] args){
         B b;
         System.out.print(b.data);
        }
    }
    public class b{
       private data;
    }
      

  14.   

    我建议这位提问的朋友先认真拜读一下James Gosling的《The Java Programming Language》
    中关于Java语言object access方面的章节