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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏的四季 中级黑马   /  2014-3-24 10:12  /  1066 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏的四季 于 2014-3-24 15:51 编辑
  1. class Outer
  2. {
  3.         int x =1;//外部成员变量

  4.         void show()
  5.         {
  6.                 final int x = 2;//外部类的局部变量
  7.                 class Inter
  8.                 {
  9.                         int x=3;//内部局部类中的成员变量
  10.                         void show_1()
  11.                         {
  12.                                 System.out.println("局部内部类访问外部类:::"+Outer.this.x);//局部内部类可以直接访问外部类
  13.                                 
  14.                                 /*
  15.                                         问:怎么访问外部类的局部变量x= 2呢?
  16.                                 */
  17.                                 
  18.                         }
  19.                         
  20.                 }
  21.                 new Inter().show_1();
  22.         }
  23. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
  1. class Outer{
  2.         int x = 3;
  3.         private class Inner{
  4.                 int x = 2;
  5.                 void function(){
  6.                         int x = 1;
  7.                         System.out.println("innner"+x);
  8.                         System.out.println("innner"+this.x);
  9.                         System.out.println("innner"+Outer.this.x);
  10.                 }
  11.         }
  12.         void method(){
  13.                 Inner in = new Inner();
  14.                 in.function();
  15.         }
  16. }
  17. class InnerClassDemo{
  18.         public static void main(String[] args) {
  19.                 Outer out = new        Outer();
  20.                 out.method();
  21.         }
  22. }
复制代码

如上代码,结果为1,2,3
原因  就近原则,当没有明确标出x所属对象获方法就就近当表明了所属对象或方法就是对应对象或方法的了

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
楼上回复跟lz问的不是一个事啊~lz问的是内部类访问已带有final的外部类的方法中的局部变量...
我觉得访问不到外部类的局部变量x,等着看大神解答....
回复 使用道具 举报
通过.this关键字获取那个类的句柄,.this只对内部类有效,
回复 使用道具 举报
我感觉不能访问到,请指点
  1. public class Test3 {

  2.         public static void main(String[] args){
  3.                 // TODO Auto-generated method stub
  4.                 new Outer().show();
  5.         }

  6. }

  7. class Outer{
  8.         int x = 1;
  9.         void show(){
  10.                 final int x =2;
  11.                 //System.out.println(x);
  12.                 class Inner{
  13.                         int x = 3;
  14.                        
  15.                         void show_1(){
  16.                                 //访问的是类Inner中的变量x=3
  17.                                 System.out.println(x);
  18.                                 //this指的是new Inner 同样打印的是类Inner中的x=3
  19.                                 System.out.println(this.x);
  20.                                 //打印的是Outer中的变量x=1
  21.                                 System.out.println(Outer.this.x);
  22.                                
  23.                                 //要访问final int x = 2;
  24.                                 //是函数嵌套中变量的调用,和如下函数之间的访问一样
  25.                                 /*public static void main(String[] args) {

  26.                                         void function1(){
  27.                                                 int x = 1;
  28.                                                 void function2(){
  29.                                                         int x = 2;
  30.                                                         System.out.println(x);
  31.                                                 }
  32.                                         }*/
  33.                                 //输出的是最近作用域的x值       
  34.                         }
  35.                 }
  36.                 new Inner().show_1();
  37.         }
  38. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马