分类
定义位置
方法中或代码块
- 局部内部类、匿名内部类
属性
- 成员内部类、静态内部类
基本介绍
局部内部类
细节
匿名内部类
成员内部类
静态内部类
理解
区分各个内部类的方式和重点
- 位置(作用域)(其它一切都以此衍生而来)
- 定义
- 访问(使用)
位置(作用域)
方法中或代码块
- 局部内部类、匿名内部类
代表着
-
这两个都可以看作是一个局部变量
-
- 局部变量意味着只能在定义的方法中使用(即在方法中先定义内部类)
-
-
- 然后局部内部类就是方法定义类后,在创建一个内部类的对象,然后操作一下其中的方法
- 而匿名内部类是因为一般都是一个对象(因为每次都只会生成一次新的类),所以定义时就会有一个引用,然后借着这个引用进行一些内部类中的方法操作
-
属性
- 成员内部类、静态内部类
代表着
- 可以看作一个属性,所以可以定义一个方法生成内部类,可以类似与get()方法
定义
本质都是类,可以进行属性,方法的声明
局部内部类、匿名内部类
- 在方法中定义所以不可以用public等修饰符
成员内部类、静态内部类
- 相当于属性所以可以用public等修饰
- 静态内部类要用static修饰
访问和使用
成员内部类、匿名内部类
因为都相当于局部变量所以
相同点
-
可以直接访问外部类的属性和方法,即使private修饰
-
如果内部类定义属性与外部类定义属性同名
-
- 就近访问和 外部类.this.属性(访问外部类中同名属性)
-
外部其它类不能访问内部类中的属性
不同点
- 匿名内部类常用于接口和子类的一个具体实现,所以常在定义(注意定义形式)时就声明对象引用,且系统自动生成一个类名,但不显示(只会出现一次这个定义)。因为每次定义时都是new的一个新的类
局部内部类和静态内部类
都相当于成员属性
相同
-
可以添加访问修饰符
-
如果内部类定义属性与外部类定义属性同名
-
- 就近访问和 外部类.this.属性(访问外部类中同名属性)
-
外部类和外部其他类都可以访问局部内部类
不同
- 静态内部类多了static所以要满足访问和使用符合static的规则