黑马程序员技术交流社区

标题: 关于内部类访问外部类的规则的一个小问题 [打印本页]

作者: 张亚青    时间: 2013-3-19 17:29
标题: 关于内部类访问外部类的规则的一个小问题
本帖最后由 张亚青 于 2013-3-20 12:46 编辑

【内部类的访问规则】
1、内部类可以直接访问外部类中的成员,包括私有。
        之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式为:"外部类名.this."
2、外部类要访问内部类,必须建立内部类对象。

以上是我在看毕老师教程的时候记得笔记,我的疑问是在第一点中:内部类持有一个外部类的引用“外部类名.this.”,请问这句话具体该怎么解释。
作者: 刘国涛    时间: 2013-3-19 17:52
本帖最后由 刘国涛 于 2013-3-19 18:03 编辑

class Outer
{
   private int x = 3;
   class Inner//内部类
  {
       void function()
       {
            System.out.println("innner :"+Outer.this.x);//输出3,可以省略Outer.this,这就是内部类持有一个外部类的引用
      }
   }

   void method()
   {
       Inner in = new Inner();
       in.function();
   }
}

class  InnerClassDemo
{
    public static void main(String[] args)
    {
          Outer out = new Outer();
          out.method();
    }
}
作者: 沉默de羔羊    时间: 2013-3-19 17:59
外部类名.this可以理解成:内部类引用当前外部类的对象!
作者: 王龙涛    时间: 2013-3-19 18:20
  1. //内部类引用外部类对象时用“外部类名”.this;的形式,例如

  2. class Outer
  3. {
  4.         public void method()
  5.                 {
  6.                         Outer .this//就是表示Outer的对象。在这种情况下和this是一样的
  7.                 }
  8.       
  9.         class  Inner
  10.                 {
  11.                         void method1()
  12.                                 {
  13.                                         Outer.this//还是表示Outer的对象。但是这里是在内部类里面。所以这里的this就是指内部类Inner的对象了。。
  14.                                                  //但是我们经常会在内部类里面调用外部的东西。所以就用Outer.this这种方式就行了
  15.                                 }
  16.                 }
  17. }

复制代码





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