内部类:
内部类:将一个类定义在另一个类的里面,对里面的那个类就称为内部类。
内部类位置:
成员位置定义-----成员内部类
局部位置定义-----局部内部类---方法中定义的类
工作面试题:局部内部类访问局部变量,该变量必须被final修饰。为什么?
局部变量会在方法调用完毕后,立马消失。而局部内部类中如果有地方使用着局部变量,当方法消失后,这个方法区中的内容还没有消失,也就是说这个变量还必须存在。所以为了延长局部变量的生命周期,就加final修饰。
内部类使用:
在测试类中直接使用成员内部类格式:
Outer.Inner oi = new Outer().new Inner();
内部类的两种常见修饰符:private(为安全)、static(为方便)。
如果内部类是静态的,调用格式:
Outer.Inner oi = new 外部类名.内部类名();
内部类和外部类之间的调用方式:
1、内部类调用外部类成员-------当成自己的成员来用,直接使用。
2、外部类调用内部类-------在自己某个方法中,创建一个内部类对象 Inner in = new Inner();
3、在测试类中直接调用内部类------Outer.Inner oi = new Outer().new Inner(); ---------等于外部类对象.内部类对象
静态内部类
内部类定义在成员位置上,static修饰,当内部类被static修饰后,只能访问外部类中的static成员,
外部类访问静态内部类:new 外部类().内部类().内部类方法()
当内部类中定义了static静态成员,该内部类也必须是static的