黑马程序员技术交流社区

标题: private变量,可以直接访问,是什么原因 [打印本页]

作者: 沈样    时间: 2012-3-2 14:18
标题: private变量,可以直接访问,是什么原因
本帖最后由 沈样 于 2012-3-2 14:40 编辑

class PrivateTest {
        private int a = 1;
        private int b = 2;
        public static void main(String[] args)
        {
                PrivateTest t = new PrivateTest();
                int b = t.b;
                System.out.println(b);
        }


}

class Test
{
                public static void main(String[] args)
                {
                        PrivateTest t = new PrivateTest();
                        int b = t.b;
                        System.out.println(b);
                }
}
这个私有的变量为什么可以在privateTest主函数中访问,但是在Test中不能访问,这不是同样的加载类,我想问的是不是虚拟机是加载前就判断如果private就不加载,还是全部加载然后在控制他的访问,突然想到的问题就发疑问
作者: 沈样    时间: 2012-3-2 14:27
本帖最后由 沈样 于 2012-3-2 14:33 编辑

static方法要访问static的变量,现在在本类的主函数中可以访问,说明PrivateTest t = new PrivateTest();已经把私有变量加载进来了,但是其他类中加载就不能访问,是因为他没有加载进来还是因为有一个判断机制控制的访问权限
作者: 黄方    时间: 2012-3-2 14:32
额,看了你这个程序,首先楼主要知道javase中访问修饰符的权限啦

作用域 当前类 同一package   子孙类   其他package
public     √          √                √      √
protected √        √               √        ×
friendly √             √              ×        ×
private √             ×              ×       ×
java访问权限修饰符(特殊情况除外)  
不写时默认为friendly

你的private是在当前类的呀,所以当然能访问啊!!
PrivateTest t = ew PrivateTest();
    t 就是一个引用,相当于c语言的指针,他所存放的事对象的地址
   然后通过t访问b  在赋值给b
   打印输出
作者: 马胜平    时间: 2012-3-2 14:34
在同一个类中当然可以直接访问
作者: 黄方    时间: 2012-3-2 14:36
本帖最后由 舞动的心弦 于 2012-3-2 14:37 编辑

额,看了你这个程序,首先楼主要知道javase中访问修饰符的权限啦

作用域 当前类 同一package   子孙类   其他package
public     √          √                √      √
protected √        √               √        ×
friendly √             √              ×        ×
private √             ×              ×       ×
java访问权限修饰符(特殊情况除外)  
不写时默认为friendly

你的private是在当前类的呀,所以当然能访问啊!!看了这个你应该明白了吧......
PrivateTest t = new PrivateTest();
    t 就是一个引用,相当于c语言的指针,他所存放的是对象的地址
   然后通过t访问b  在赋值给从新定义的变量b
     打印输出
  这是很基础的问题,建议LZ有时间多看看《Thanking in java》啦,一起加油吧!!呵呵  ,,,

作者: 沈样    时间: 2012-3-2 14:44
好多不懂看来还好加倍努力,兄弟们一起努力吧
作者: 吕婷    时间: 2012-3-2 18:27
加载是加载到了,只是访问受阻。因为首先建立t后就开辟了一个内存;另外虽然不能直接访问,但是可以通过set和get方式来访问,说明只是访问时候权限问题。我也是菜鸟,只是自己理解而已。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2