A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涐扪①起奮乧 中级黑马   /  2013-10-28 11:29  /  1384 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Outer
  2. {
  3.         //private int x = 3;内部类也可以直接访问
  4.         int x = 3;//如果注释掉int x = 3;
  5.        
  6.         class Inner
  7.         {
  8.                 int x = 4;//如果注释掉int x = 4;
  9.                 void function()
  10.                 {
  11.                         int x = 6;
  12.                         System.out.println("inner:"+x);        //前面注释掉的情况,x前面省略Outer.this.
  13.                         System.out.println("inner:"+x);        //局部有打印局部
  14.                         System.out.println("inner:"+this.x);//加上this打印内部类里面成员变量x
  15.                         System.out.println("inner:"+Outer.this.x);//加上Outer.this打印外部类成员变量x
  16.                 }
  17.         }
  18.        
  19.         void method()
  20.         {
  21.                 Inner in = new Inner();
  22.                 in.function();
  23.         }
  24. }
  25. class InnerClassDemo
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 Outer out = new Outer();
  30.                 out.method();
  31.                 //Inner in = new Inner();
  32.                 //in.fuction();
  33.                 //直接访问内部类中成员但是只使用于不私有化的情况,一般几乎用不着
  34.                 //Outer.Inner in = new Outer().new Inner();
  35.                 //in.function();
  36.         }
  37. }
复制代码
请问System.out.println("inner:"+this.x);//加上this打印内部类里面成员变量x,这句话我这样理解是对的吗?还是这里的x指的是本类中的x,这一块,还是希望理解的人给深度剖析一下,谢谢

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 继续加油~

查看全部评分

7 个回复

倒序浏览
this.x 指的是该类所生成当前对象中的x,this关键字引用的就是当前对象。你可以把内部内单独拿出来当做一个没有外部类来理解,你看下面的代码this.x指的是什么呢。this这个关键词可以再看看。
class Inner
        {
                int x = 4;//如果注释掉int x = 4;
                void function()
                {
                        int x = 6;
                        System.out.println("inner:"+this.x);
                       
                }
        }

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报 1 0
this :代表本类的对象 ,代表它所在函数,所属对象的引用。
简单的说:哪个对象在调用this所在的函数,this就代表哪个对象。
那么你的程序中的语句System.out.println("inner:"+this.x);中 this代表Inner类的对象。
this.x 代表Inner 类对象 in 的成员标量 x,也就是 int x = 4; 这个x;
回复 使用道具 举报
linjl_ll 发表于 2013-10-28 12:05
this.x 指的是该类所生成当前对象中的x,this关键字引用的就是当前对象。你可以把内部内单独拿出来当做一个 ...

看完你的解释,我重新复习一下。this:用于区分局部变量和成员变量的同名情况。本类中同名变量x有两个,一个是局部的,一个是Inner类的成员变量x,加上this代表本类对象,Inner类在调用this,所以代表int x=4中的x,这样理解应该是对的吧
回复 使用道具 举报
遗忘 发表于 2013-10-28 12:45
this :代表本类的对象 ,代表它所在函数,所属对象的引用。
简单的说:哪个对象在调用this所在的函数,this ...

this:用于区分局部变量和成员变量的同名情况。本类中同名变量x有两个,一个是局部的,一个是Inner类的成员变量x,加上this代表本类对象,Inner类在调用this,所以代表int x=4中的x,这样理解应该是对的吧
回复 使用道具 举报
涐扪①起奮乧 发表于 2013-10-28 17:25
看完你的解释,我重新复习一下。this:用于区分局部变量和成员变量的同名情况。本类中同名变量x有两个, ...

恩,是的,this的作用不仅仅在区分变量上,还可以在一个构造函数中调用另一个构造函数。
class MyTest{
        public MyTest(){
                System.out.println("aaaaa");
        }
        public MyTest(String mm){
                this();
        }
}
回复 使用道具 举报
问题解决后及时修改主题至“提问结束”。
回复 使用道具 举报
内部类中的this只代表当前这个内部类,如果想在内部类中使用父类的元素,需要把父类名加到前面,例如:父类名.this  。
this其实不难理解,简单来说,就是你这个方法属于谁,在这个方法体内,谁就是this。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马