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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© runner 中级黑马   /  2016-5-11 22:33  /  457 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用已知的变量,在控制台输出30,20,10。
               
                class Outer {
                        public int num = 10;
                        class Inner {
                                public int num = 20;
                                public void show() {
                                        int num = 30;
                                        System.out.println(?);     //num
                                        System.out.println(??);    //this.num
                                        System.out.println(???);   //Outer.this.num
                                }
                        }
                }
                class InnerClassTest {
                        public static void main(String[] args) {
                                Outer.Inner oi = new Outer().new Inner();
                                oi.show();
                        }        
                }

2 个回复

倒序浏览
创建内部类对象,调用show方法,分别打印内部类方法局部变量30,内部类成员变量20,外部类成员变量10,谢谢。
回复 使用道具 举报
   首先应该看一下要输出的几个值是什么变量,30是内部类的show()方法中的局部变量,根据就近原则,第一个输出语句中直接用num就会输出30,20是内部类的成员变量,在类中访问成员变量用this.变量就可以了,所以第二个输出语句中用this.num就会输出20,难一点的是输出10,外部类和内部类不是继承关系,不可以用super访问,在内部类中想访问外部类的成员变量可以用  外部类名.this.变量名,所有用 Outer.this.num就会输出10了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马