黑马程序员技术交流社区

标题: 好心人帮我看看吧,我怀疑我的智商了 [打印本页]

作者: 逍遥小seng    时间: 2014-10-20 17:32
标题: 好心人帮我看看吧,我怀疑我的智商了
class lianxi3
{
        public static void main(String[] args)
        {
               
                new lianxi3 ();//通过,不理解
        }
}
class A
{
        int x=7;

}
class B extends A
{
        int x = 5;
        static void function()
        {
                //System.out.println(x);//不行,我能理解
                //System.out.println(this.x);//不行,我能理解
                //System.out.println(super.x);//不行,我能理解
                System.out.println(new B().x);//通过 x=5  不理解
                System.out.println(new A().x);//通过 x=7  不理解
        }

}


作者: 十万一千    时间: 2014-10-20 18:25
新建一个对象,访问对象的成员变量为什么不能理解呢

作者: hanxing    时间: 2014-10-20 18:35
哈哈,你这是走火入魔的节奏啊.
作者: zd12345    时间: 2014-10-20 18:36
  1. //System.out.println(x);//不行,我能理解
  2.           //System.out.println(this.x);//不行,我能理解
  3.           //System.out.println(super.x);//不行,我能理解
  4.              System.out.println(new B().x);//通过 x=5  不理解
  5.              System.out.println(new A().x);//通过 x=7  不理解
复制代码

因为x是实例变量,只有产生类对象后才能引用。前三条语句都没有实例化,因此不行。new B().x和new A().x就是分别产生一个B和A的对象,然后引用其x值。
作者: 郑飞    时间: 2014-10-20 19:17
new lianxi3 ();//通过,不理解
自己的main函数里面创建自己对象 这天天用的啊 看错了吧你
作者: 逍遥小seng    时间: 2014-10-20 19:42
嗯,我弄错了





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