黑马程序员技术交流社区
标题:
内部类的问题
[打印本页]
作者:
郑强强
时间:
2012-4-11 13:37
标题:
内部类的问题
class Outer
{
int x=3;
void method()
{
final int y = 4;
class Inner//局部内部类不可定义静态成员
{
void function()
{
System.out.println(Outer.this.x);
}
}
new Inner().function();
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer().method();
System.out.println("Hello World!");
}
}
代码中的红色部分Outer.this.x代表的是什么意思啊,为什么不能改成OuterInner().x啊??
作者:
尹博
时间:
2012-4-11 13:49
Inner是类名,用类名只能直接访问类中的静态成员,这里Inner中的function()方法是非静态的,所以只能用对象名访问,在建立对象之前并不知道对象名,所以用this表示,因此不能用Outer.Inner().x而用Outer.this.x
作者:
李敏
时间:
2012-4-11 13:54
若外部类属性,内部类属性,内部类
方法变量同名
,则其访问方式分别是:
访问外部类的属性:外部类类名.this.属性
访问内部类属性:this.属性
访问内部类方法的局部变量:属性
作者:
李敏
时间:
2012-4-11 13:55
若外部类属性,内部类属性,内部类
方法变量同名
,则其访问方式分别是:
访问外部类的属性:外部类类名.this.属性
访问内部类属性:this.属性
访问内部类方法的局部变量:属性
作者:
邓斌
时间:
2012-4-11 14:18
Outer.this.x 这是访问外部类变量x
this 代表它在函数所属对象的引用
this.x 代表它在函数所属对象的x。
那我想用外部类的x .外部类谁的x 就加上类名.谁调用就用谁类名。
Outer.this.x
作者:
石好强
时间:
2012-4-11 14:33
内部成员不是静态的不能直接 类型.成员 来调用。
Outer.this.x 这里Outer 是外部类,this 是现在未知的将来会调用 x 变量的对象。
作者:
金兴
时间:
2012-4-11 15:38
Outer.this.x 这句指引用 Outer类中的成员变量,内部类的变量引用 直接用this.变量名 就行了
变量名在内存中的运行图::
jin.jpg
(27.35 KB, 下载次数: 51)
下载附件
2012-4-11 15:38 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2