黑马程序员技术交流社区
标题:
内部类
[打印本页]
作者:
汤芝
时间:
2012-8-18 17:28
标题:
内部类
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)
请问怎么理解,怎么修改?
作者:
黑马连家华
时间:
2012-8-18 17:35
没有主函数是怎么运行的..把源码发来吧..我吃饭去
作者:
杨鹏鹏
时间:
2012-8-18 17:45
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);
}
}
作者:
黑马王冬冬
时间:
2012-8-18 19:58
本帖最后由 黑马王冬冬 于 2012-8-18 19:59 编辑
1.这其实涉及到重名变量的访问
2..如果外部类成员变量,内部类成员变量和内部类方法的局部变量重名,则可通过使用this,外部类类名.this作为限定来区分。
3.示例如下
class outer {
String str = "外部类成员变量";
class inner {
String str = "内部类成员变量";
innerMethod() {
String str = "内部类方法局部变量";
//访问外部类成员变量
outer.this.str = "访问外部类成员变量";
//访问内部类成员变量
this.str = "访问内部类成员变量";
}
}
复制代码
4.在普通方法或构造器访问其他方法,field时无需使用this前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的field,则必须使用this前缀。
5.示例如下
class Demo{
String str = "成员变量";
Demo () {
String str = "局部变量";
this.str = "访问成员变量";
}
method() {
String str = "局部变量";
this.str = "访问成员变量";
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2