嵌套类:
1.静态成员类
静态成员类是外围类的一个静态成员,遵守同样的可访问性规则
用法:a.作为公有的辅助类
内部类:
2.非静态成员类
语法上只和静态成员类的唯一区别是少一个static修饰符
a.它的每个实例都隐含着与外围类的一个实例相关联
b.在其实例方法内部可以调用外围实例上的方法,或者利用this构造获得外围实例的引用
用法:a.定义一个Adapter
public class MySet<E> extends AbstractSet<E>{
public Iterator<E> iterator(){
return new MyIterator();
}
private class MyIterator implements Itertor<E>{
...
}
}
–如果嵌套类嵌套类的实力可以在它外围类的实例之外独立存在,这个嵌套类必须是静态成员类
–如果声明成员类不要求访问外围实例,就始终要把static放在他的声明中.
3.匿名类
当且仅当匿名类粗现在非静态环境中时,它才有外围实例
缺点:不能执行instanceof测试和任何命名类的其他事情
无法实现多个接口或扩展一个类;除了从他的超类型中继承得到之外,其客户端无法调用任何成员;由于匿名类出现在表达式中,他必须保持简短来保证程序的可读性(<10)
用法:a.动态创建函数对象Arrays.sort();
Arrays.sort(StringArray,new Comparator<String>(){
// public int compare(String s1,String s2){
// return s1.length()-s2.length();
// }
// })
b.创建过程对象(Runnable,Thread,TimerTask实例)
c.声明在静态工厂方法的内部
4.局部类:拥有其他嵌套类的特点
在任何可以声明局部变量的地方都可以声明局部类,并遵守同样的作用域规则
总结:如果一个嵌套类需要在单个方法之外仍然可见,或者他太长了不适合放在方法内部,就使用成员类.如果成员类的每个实例都需要一个指向其外围实例的引用,就用静态成员类;否则,就做成静态的.如果这个嵌套类属于一个方法的内部,你只需要在一个地方创建实例,并且已经有了一个预置的类型可以说明这个类的特征,就要把它做成匿名类;否则,就做成局部类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端