定义: 把类定义在其他类的内部
访问特点: 内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象。
位置:
外部类$内部类.class
使用:
Outer.Inter o=new Outer().new Inter()
外部类和内部类没有继承关系
可以通过外部类名.this.变量 访问外部类的变量
如 outer.this.num
局部内部类访问局部变量
注意:要将局部变量申明为final,因为局部对象没有立刻从堆内存中消失, 由jvm在空闲时回收,如果不是final,局部变量随着方法的调用完毕而消失,局部对象就不能使用局部变量了。final修饰的变量在内存中存储的是一个常量值。
企业中匿名内部类的应用 原因:用完可以直接回收
Outer.method().show();
分析 method是Outer的静态方法 而Outer.method()返回的是一个对象 不然不能继续调用方法
class Outer{
public static Inter method(){
return new Inter(){ public void show(){ System.out.println(""HelloWord)}};
}
}
访问特点: 内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象。
位置:
外部类$内部类.class
使用:
Outer.Inter o=new Outer().new Inter()
外部类和内部类没有继承关系
可以通过外部类名.this.变量 访问外部类的变量
如 outer.this.num
局部内部类访问局部变量
注意:要将局部变量申明为final,因为局部对象没有立刻从堆内存中消失, 由jvm在空闲时回收,如果不是final,局部变量随着方法的调用完毕而消失,局部对象就不能使用局部变量了。final修饰的变量在内存中存储的是一个常量值。
企业中匿名内部类的应用 原因:用完可以直接回收
Outer.method().show();
分析 method是Outer的静态方法 而Outer.method()返回的是一个对象 不然不能继续调用方法
class Outer{
public static Inter method(){
return new Inter(){ public void show(){ System.out.println(""HelloWord)}};
}
}