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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左耳的鱼 中级黑马   /  2013-7-14 13:22  /  1167 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 左耳的鱼 于 2013-7-14 18:28 编辑

class InnerClassDemo1 {
        public static void main(String[] args) {
                new Outer().show();
                /*Outer.Inner oi = new Outer().new Inner();
                oi.method();*/
        }
}

class Outer{
        int num = 10;
        class Inner{
                int num = 20;
                public void method() {
                        int num = 30;
                        System.out.println(Outer.num);
                }
        }
        public void show() {
                Inner in = new Inner();
                in.method();
        }
}
怎么访问到外部类里的变量

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
再打印语句是Outer.this.num  因为内部类会持有外部类的this  内部类就是通过这个this来访问外部类成员的
所以使用外部类类名.this.变量名来标识是外部类的变量。
回复 使用道具 举报
你好,使用 外部类名.this.变量名,就可以访问到外部类的变量了。
回复 使用道具 举报
  1. public class InnerClassDemo1 {
  2.        
  3.         public static void main(String[] args) {
  4.                 new Outer().show();
  5.                 /*Outer.Inner oi = new Outer().new Inner();
  6.                 oi.method();*/
  7.         }
  8. }

  9. class Outer{
  10.         int num = 10;
  11.         class Inner{
  12.                 int num = 20;
  13.                 public void method() {
  14.                         // int num = 30;
  15.                         System.out.println(num);   //如代码,如果你没有重新定义一个与外部类同名的成员变量,则在这里输出的是外部类的成员变量
  16.                 }
  17.         }
  18.         public void show() {
  19.                 Inner in = new Inner();
  20.                 in.method();
  21.         }
  22. }
复制代码
1.看代码
2.原理实际上是 num=Outer.this.num;   内部类访问外部类的变量,这是一个特点。
3.当你在内部类定义一个同名的num 时候,除非你加上this.num或Outer.this.num,不然它会先找内部类的变量。你可以调调下。望采纳了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马