内部类
定义在类当中的一个类(内部类可以访问外部类当中的成员)
为什么需要内部类?
1.增强封装,把内部类隐藏在外部类当中,不允许其他类访问这个类
2.增加了代码的一个维护性
内部类可以分为四种
1.实例内部类
2.静态内部类
3.局部内部类
4.匿名内部类
(ps:外部类的修饰符只能由两个,public和默认什么都不加)
实例内部类
直接定义在类当中的一个类(在类当中没有任何一个修饰符)
实例内部类的创建(属于对象)
想要创建内部类,必须要先创建外部类
例:
Outter.Inner in = out.new Inner();
实例内部注意点
1.想要使用内部类,必须先创建外部类
2.在内部类当中可以访问外部类当中的成员
3.在内部类当中,不能有静态的成员
4.外部类是不能直接访问内部当中的成员
变量的访问(就近原则)
1.直接访问是本方法的变量
2.this访问的是本类的变量
3.Outter.this.访问的是外部诶的变量
静态内部类(在内部类前面加上static)
静态内部类的创建(属于类)
1.不需要创建外部类对象
例:Outter.Intter in = new Outter.Inner();
静态内部类注意点
1.静态内部类是不需要创建外部对象
2.在静态内部类当中,是没有外部类引用
3.静态内部类,是可以访问外部类的静态成员
4.静态内部类当中可以定义金宝台成员,也可以定义非静态成员
静态内部类当中访问外部的普通变量
局部内部类(定义在方法当中的内部类)
1.不能使用一些修饰 public private
2.局部内部只能在定义的方法当中使用
3.局部内部类当中是可以包含局部内部变量,使用的局部变量本质是final
(如果不是final常量的话,当局部内部类使用了外部类的变量,当局部内部类的方法出帧以后,在堆中大的变量就没有可以指向的地方,变成空指针)
匿名内部类(是一个没有名字的局部内部类)
只使用一次时;必须要有父类或者接口实现