public class T {
private String s="max";
public void ss(){
final String ls = "";
String t="inner";
String s="inner";
protected void say() {
s="";
this.s="";
T.this.s="";
String var = ls;
System.out.println("say foo!");
}
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内部类总结