一、概念
是什么
所谓内部类就是在一个类的内部嵌套其他类结构
为什么使用内部类
1、内部类可以访问该类定义所在操作域的所有数据
2、内部类可以对该包下的其他类隐藏
3、内部类拥有类的基本特征,使用内部类继承某个具体的或抽象的类。可以在某种程度上解决单继承的缺陷。
内部类和外部类的关系
1、内部类可以直接访问外部类的属性(静态类只能访问静态属性)
2、外部类可以使用类名. 或者 通过内部类对象访问
3、成员内部类和静态内部类可以被任意修饰符修饰。方法内部类和匿名内部类,不能被修饰符修饰。
二、内部类划分
一般内部类划分的类型
1、成员内部类
2、静态内部类
3、方法内部类(局部内部类)
4、匿名内部类
1、成员内部类
定义在类内部的类,与类的方法,属性属于同一级别的,即也是外部类的成员。
注:
成员内部类中不能存在任何static成员与方法。(jdk17 以上才支持)
可以被任意修饰符修饰。
2、静态内部类
静态内部类是用static修饰的内部类 。
注:
静态内部类不可以使用外部类中的任何非静态属性和方法。
可以被任意修饰符修饰。
3、方法内部类
方法内部类是定义在外部类的方法中,和成员内部类基本一致,只是作用域不用。
- 方法内部类不允许使用权限修饰符,public、protected、private均不允许
- 方法内部类对外完全隐藏,除了创建这个类的方法可以访问外,别的都不可以访问
- 可以直接访问方法内的局部变量和参数。【存在限制,需要 final 或有效的final修饰的】,但是不能更改。
- 无法创建静态变量和静态方法
4、匿名内部类
Java匿名内部类是一种特殊的内部类,它没有类名,直接在创建对象时定义并实现。通常用于创建只需要使用一次的类对象,可以简化代码,提高代码的可读性和可维护性。
- 匿名内部类必须继承一个抽象类或者实现一个接口
- 匿名内部类没有构造方法,因为他没有类名。
- 匿名内部类没有访问修饰符
- 匿名内部类中不能存在任何静态成员或方法
- 与局部内部相同,匿名内部类也可以引用方法形参,此形参也必须声明为final
1446

被折叠的 条评论
为什么被折叠?



