1. 内部类
1)内部类可以分为:非静态内部类、静态内部类、成员内部类
2)内部类是可以用 private 与 protected 修饰
2. 非静态内部类
1)在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建内部类的实例。
例如: Outer.Inner i = new Outer().new Inner() //需要创建外部类实例
2) 在实例内部类中,可以访问外部类的所有成员。
3) 一个内部类实例只对应一个外部类实例
4) 在实例内部类中不能定义 static 成员,除非同时使用 final 和 static 修饰。
3. 静态内部类
1)在创建静态内部类的实例时,不需要创建外部类的实例。
Outer.Inner oi = new Outer.Inner();
2)静态内部类中可以定义静态成员和实例成员
3) 静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员,则需要通过外部类的实例去访问。
4. 局部内部类
1)局部内部类与局部变量一样,不能使用访问控制修饰符(public、private 和 protected)和 static 修饰符修饰。
2)局部内部类只在当前方法中有效。
3)局部内部类中不能定义 static 成员。
4)在局部内部类中可以访问外部类的所有成员。但只可以访问当前方法中 final 类型的参数与变量
5. 匿名类
匿名类有两种实现方式:
- 继承一个类,重写其方法。
- 实现一个接口(可以是多个),实现其方法。
标签:部类,java,内部,静态,成员,实例,类中 From: https://www.cnblogs.com/dkhlaojogo/p/17237830.html