内部类:将类写在其他类的内部,可以写在其他类的成员位置和局部位置
局部内部类:将类写在其他类的局部方法中
例如
public class outer {
public void out(){
int i=2;
class Inner{
int a=1;
public void inner(){
System.out.println(a);
}
}
}
}
其中Inner就是局部内部类
那么如何调用Inner类中的inner()方法呢?
我们知道,在main方法中是没有办法直接调用类的方法中的局部变量,例如上面代码中的局部变量i是没有办法直接调用的。但是可以修改out()方法的返回值调用i。
而局部内部类调用,只能在out()方法中new一个对象来调用。
例如
public class outer {
public void out(){
int i=2;
class Inner{
int a=1;
public void inner(){
System.out.println(a);
}
}
Inner in=new Inner();
in.inner();
}
}
或者使用匿名对象调用
public class outer {
public void out(){
int i=2;
class Inner{
int a=1;
public void inner(){
System.out.println(a);
}
}
new Inner().inner();
}
}
注意 匿名对象没有引用变量,只能使用一次,每次创建一个匿名对象都在堆中分配内存,都具有不同的内存地址。创建多了比较浪费资源。