定义:内部类是在一个类中定义的另一个类
意义:内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性
分类:非静态成员式内部类,局部内部类,匿名内部类(不需要写名字的局部内部类),静态成员式内部类(在非静态定义上加上static)
非静态成员式内部类:
不在方法中定义的内部类可以访问该类定义所在的作用域(该类的最大的内个大括号)中所有的数据,方法,包括了私有数据
代码例子:
非静态式成员内部类不能声明static成员,因为本身没有空间,什么时候要使用什么时候有空间但是挂static的静态成员是本身生成的时候就要带空间的。
非静态式成员内部类不能再该类定义的作用域中的静态方法中直接使用(不能直接使用是因为没有空间需要一个new一个对象)
加上new
就不报错我们需要用到一个person类型的方法我们就需要new一个person类型的对象用对象来调用后面的方法或者
需要调用内部类必须要先调用外部类用外部类引用内部类 外部类名.内部类名 变量 = new外部类名().new内部类名()
非静态成员式内部类也能实现多继承 (普通类不支持多继承)
局部内部类
定义:定义在代码块,方法体内等。
方法销毁了这个类也就没了,也不能在方法大括号外面调用。
局部内部类不用使用public,private, protected,(前面三个都是访问权限修饰符,能挂在全局变量前面,控制访问范围 )static(也只能挂在全局变量前面修饰这个是类或者是对象)修饰;
局部内部类和非静态成员式内部类一样不能拥有静态成员,但是可以访问外部成员所有变量
局部内部类访问的局部变量必须是使用final修饰的,java8之后自动隐式加上了
int前面内个final不用必须加上;想给a赋值必须只能在定义的时候赋值不然就会
如果不在局部类里用那可以随意更改数值
但是用了就不能更改了,因为他是final修饰的