java 嵌套类 访问方法

classOuter{inti=5;classInner{inti=4;publicvoidtest(){inti=3;System.out.println(i);//注... class Outer
{
int i=5;
class Inner
{
int i=4;
public void test()
{
int i=3;
System.out.println(i);//注释1
System.out.println(this.i);//注释2
System.out.println(Outer.this.i);//注释3
}
}
public static void main(String []args)
{
Outer out=new Outer();
Outer.Inner inner=out.new Inner();
inner.test();
}
}
这里的注释2的this 和注释3的Outer.this不都是那个inner对象吗 那个注释3我很不理解 谁可以给我详细的解释下
展开
 我来答
赛杏ka
2008-08-06 · 超过55用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:0
展开全部
首先打印的结果是
3
4
5

3是函数体test的私有变量,在函数test内可见,除了这个范围就不可见;
4是函数test所从属的类实例的变量,即inner类实例的变量,仅在inner类实例的范围内可见;
5是Outer类实例的变量i,不是指inner类。
你要记住,在Java中,this关键字指的是某个类的实例,Outer.this指的是Outer类的实例;如果this前面没有指定范围,那么this指的是本类的作用域范围,在函数体test中,this的范围只能向上延伸至inner
yumenfeiyu945
2008-08-06 · TA获得超过8976个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:228万
展开全部
this表示这个内部类的当前对象,Outer.this表示的是这个内部类对象所相关的外部类的对象,所以最后结果是
3
4
5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怀新垒fb
2008-08-06 · TA获得超过378个赞
知道小有建树答主
回答量:391
采纳率:100%
帮助的人:362万
展开全部
很明显Outer.this的this指Outer类嘛!其实这个嘛是JAVA规则!不好理解,也要习惯
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cau_thinker
2008-08-06 · TA获得超过102个赞
知道答主
回答量:77
采纳率:0%
帮助的人:0
展开全部
Java语言规定是这样的,没有为什么。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式