内部类类别:
成员内部类:在一个类的成员位置定义另外一个类,那么另外一个类就被称为成员内部类。
访问方式1: 在外部类提供一个方法创建内部类的对象进行访问。
2: 在其他类创建内部类的对象进行访问。创建格式:外部类.内部类 变量名=new 外部类().new 内部类();
注意:如果是静态内部类:外部类.内部类 变量名=new 外部类.new 内部类()
成员内部类要注意的事项:
1.成员内部类可以直接访问外部类的成员
2.如果成员内部类与外部类存在同名的成员,在内部类默认访问的是内部类的成员,可以用“外外部类.this.成员 ”来访问指定的外部类成员
3.如果成员内部类出现了静态成员,那么该成员内部类也必须使用static修饰。
4.如果成员内部类是私有的,那么创建内部类的对象就只能在外部类提供方法创建。
局部内部类: 在一个类的方法内部定义另外一个类,另外一个类就称为局部内部类。
注意事项:如果局部内部类访问了局部变量,那么该变量需要使用final修饰(原因:因为生 命周期不一致,所有内部类访问的是一个复制品)
局部变量:不能定义为public,protected,private或者static类型
不能定义static变量;
匿名内部类:没有类名的类。
好处:简化书写
匿名内部类的使用前提:必须存在继承或者实现关系。
格式:new 父类(父接口){
匿名内部类的成员;
} 匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效