黑马程序员技术交流社区
标题:
关于内部类中this用法问题
[打印本页]
作者:
、海
时间:
2014-6-4 21:58
标题:
关于内部类中this用法问题
本帖最后由 、海 于 2014-6-4 22:02 编辑
Outer {
int x =3;
void method(){
class Inner{
void function(){
System.out.println(Outer.this.x)//此处用法与直接用 x 有什么区别?
}
}
new Inner().function();
}
}
复制代码
public class InnerClassTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Outer().method();
}
}
作者:
406957151@qq.co
时间:
2014-6-4 22:22
和直接使用x没有区别 直接使用x隐含了Outer.this. 就像类不写构造方法一样有默认的构造方法
作者:
淡淡柠檬茶
时间:
2014-6-4 23:04
class outer
{
private int x =3; //外部成员
class Inner
{
int x = 4; //内部成员
void function()
{
int x = 6 ; //内部局部成员
System.out.println(x);
}
}
}
作者:
Autumn
时间:
2014-6-4 23:07
应该没啥区别,使用外部类,就必须加this
作者:
superob123
时间:
2014-6-4 23:16
其实是没区别,但如果是匿名内部了和静态内部类就不可以这样了
作者:
西门吹风
时间:
2014-6-5 00:07
本帖最后由 西门吹风 于 2014-6-5 00:15 编辑
如下代码,当有同名变量要用引用指定变量,才能访问到想要问的变量,如果只写x,个人理解会从内层向外找,内层有,就用内层的,没有就向外层找,没有再向外层找.........
class ThisTest
{
public static void main(String[] args)
{
Outer a=new Outer();
a.method();
Outer2 b=new Outer2();
b.method();
}
}
class Outer
{
int x =3;
void method()
{
class Inner
{
int x=2;
void function()
{
int x=1;
System.out.println(Outer.this.x); //打印3,外部类的成员变量
System.out.println(this.x); //打印2,内部类的成员变量
System.out.println(x); //打印1,方法内的变量
}
}
new Inner().function();
}
}
class Outer2
{
int x =3;
void method()
{
class Inner
{
int x=2;
void function()
{
System.out.println(x); //打印2,方法中没有,向外层找到成内部类的成员变量
}
}
new Inner().function();
}
}
复制代码
作者:
茄子
时间:
2014-6-5 08:36
这里确实没有任何的区别,在this之前有一句隐含的代码!!,但是,再有内部成员变量和内部局部变量的时候,这两种写法就不一样了哦,具体 访问哪个变量,请看我的楼上!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2