内部类访问方法局部变量

public class T {
private String s="max";
public void ss(){
final String ls = "";

T t=new T();

new Inner().t="";//错误,未声明Inner不能用

class Inner {
String t="inner";
String s="inner";
       protected void say() {
s="";
this.s="";
T.this.s="";
String var = ls;
           System.out.println("say foo!");
       } 

}

new Inner().t="";//正确

}

}

1.方法局部变量不能用private等修饰

2.内部类只能是abstract 或者final,所以如果访问方法中局部变量ls,则需要将其声明为final(另一个原因是因为生命周期不一样),声明为final之后就是常亮,只能用String var = ls;而不能出现赋值语句如ls="".

3.访问外部类的成员变量,可以用直接访问(提供了一种和外界交换数据的方式,比上面final方法好),如s,如果内部类自已有重名变量则用T.this.s访问

4.红色部分说明外部可以通过创建内部类访问其成员变量。但是要在声明之后。

参考:Java内部类总结




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值