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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汤芝 初级黑马   /  2012-8-18 17:28  /  1517 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

public class Outer {
                private int size;
                public class Inner
                {
                        private int size;
                          public void doStuff(int size)
                    {            
                          size++; // 引用的是doStuff函数的形参
                      this.size++; //引用的是Inner类中的成员变量
                      Outer.this.size++; // 引用的Outer类中的成员变量
                      }
                }
}
这段程序不太明白,运行时也报错:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        Syntax error, insert "}" to complete MethodBody

        at com.itheima.Test1.main(Test1.java:8)
请问怎么理解,怎么修改?

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 新人发帖,赞一个!

查看全部评分

3 个回复

正序浏览
本帖最后由 黑马王冬冬 于 2012-8-18 19:59 编辑

1.这其实涉及到重名变量的访问

2..如果外部类成员变量,内部类成员变量和内部类方法的局部变量重名,则可通过使用this,外部类类名.this作为限定来区分。

3.示例如下
  1. class outer {
  2.   String str = "外部类成员变量";
  3.   class inner {
  4.         String str = "内部类成员变量";

  5.         innerMethod() {
  6.               String str = "内部类方法局部变量";

  7.               //访问外部类成员变量
  8.               outer.this.str = "访问外部类成员变量";

  9.              //访问内部类成员变量
  10.              this.str = "访问内部类成员变量";
  11.   }
  12. }
复制代码
4.在普通方法或构造器访问其他方法,field时无需使用this前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的field,则必须使用this前缀。

5.示例如下
  1. class Demo{
  2.   String str = "成员变量";

  3.   Demo () {
  4.   String str = "局部变量";
  5.   this.str = "访问成员变量";
  6.   }

  7.   method() {
  8.   String str = "局部变量";
  9.   this.str = "访问成员变量";
  10.   }
  11. }
复制代码
回复 使用道具 举报
package com.itheima;

public class Outer {
                private int size;
                public class Inner
                {
                        private int size;
                          public void doStuff(int size)
                    {            
                          size++; // 引用的是doStuff函数的形参
                      this.size++; //引用的是Inner类中的成员变量
                      Outer.this.size++; // 引用的Outer类中的成员变量
                      }
                }
                public static void main(String[] args) {
                                        Outer.Inner in=new Outer().new Inner();
                                        in.doStuff(10);
                                }
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 新人回帖,赞一个!

查看全部评分

回复 使用道具 举报
没有主函数是怎么运行的..把源码发来吧..我吃饭去
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马