java开发中嵌套类的详解及实例
发布时间 - 2026-01-11 02:25:03 点击率:次java开发中嵌套类的详解

在java语言规范里面,嵌套类(Nested Classes)定义是:
A nested class is any class whose declaration occurs within the body of another class or interface. A top level class is a class that is not a nested class.
说的简单一点,就是定义在类里面的类。一般把定义内部类的外围类成为包装类(enclosing class)或者外部类
嵌套类分类
根据nested class定义的地方,可以分为member nested class,local nested class , anonymous nested class
- member nested class(成员嵌套类) :成员嵌套类 作为 enclosing class 的成员定义的,成员嵌套类有enclosing class属性
- local nested class (局部嵌套类): 局部嵌套类定义在 enclosing class 的方法里面,局部嵌套类有enclosing class 属性和enclosing method 属性
- anonymous nested class(匿名嵌套类):匿名嵌套类没有显示的定义一个类,直接通过new 的方法创建类的实例。一般回调模式情况下使用的比较多
member nested class 可以使用public,private,protected访问控制符,也可以用static,final关键字
local nested class 可以使用final关键字
anonymous nested class 不使用任何关键字和访问控制符
来自Java编程思想:
如果不需要内部类对象与外围类对象之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。要想理解static应用于内部类时的含义,就必须记住,普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。然而,当内部类时static的时候,就不是这样了。嵌套类意味着:
要创建嵌套类的对象,并不需要其外围对象。
不能从嵌套类的对象中访问非静态的外围类对象。
嵌套类与普通的内部类还有一个区别。普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段(这就是为什么单例设计模式中,内部类为什么必须是静态的原因了),也不能包含嵌套类,但是嵌套类可以包含所有这些东西!
下面是懒汉式单例模式的代码:
package com.easyliu.staticinnerclass;
/**
* 懒汉式单例
* @author EasyLiu
*
*/
public class Singleton {
private Singleton() {
System.out.println("Singleton-init");
}
/**
*
* @author EasyLiu 嵌套类(静态类)
*
*/
private static class SingletonHolder {
private final static Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
public static void main(String[] args) {
//测试Singleton会初始化几次
Singleton.getInstance();
Singleton.getInstance();
Singleton.getInstance();
Singleton.getInstance();
Singleton.getInstance();
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 嵌套类
# 嵌套类的详解
# 嵌套类实例
# 详解Java 中的嵌套类与内部类
# 深入理解Java嵌套类和内部类
# java 嵌套类的详解及实例代码
# Java嵌套类和内部类详解
# Java开发岗位面试被问到嵌套类怎么办
# 可以使用
# 访问控制
# 放在
# 不需要
# 是这样
# 就不
# 这就是
# 可以用
# 几次
# 希望能
# 要想
# 能有
# 还有一个
# 应用于
# 谢谢大家
# 比较多
# 回调
# 可以分为
# 象中
# 存了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
如何在服务器上三步完成建站并提升流量?
python中快速进行多个字符替换的方法小结
如何快速搭建支持数据库操作的智能建站平台?
LinuxShell函数封装方法_脚本复用设计思路【教程】
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
利用vue写todolist单页应用
如何用JavaScript实现文本编辑器_光标和选区怎么处理
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Android实现代码画虚线边框背景效果
如何确认建站备案号应放置的具体位置?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
简历没回改:利用AI润色让你的文字更专业
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
JS实现鼠标移上去显示图片或微信二维码
如何解决hover在ie6中的兼容性问题
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
如何彻底删除建站之星生成的Banner?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
php json中文编码为null的解决办法
Laravel如何自定义分页视图?(Pagination示例)
Laravel如何实现多对多模型关联?(Eloquent教程)
Laravel如何创建自定义Facades?(详细步骤)
高端建站如何打造兼具美学与转化的品牌官网?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Thinkphp 中 distinct 的用法解析
微信小程序 canvas开发实例及注意事项
如何快速查询网址的建站时间与历史轨迹?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何挑选最适合建站的高性能VPS主机?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何在IIS中新建站点并配置端口与物理路径?
如何在宝塔面板中修改默认建站目录?
如何快速生成高效建站系统源代码?
网站优化排名时,需要考虑哪些问题呢?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Java垃圾回收器的方法和原理总结
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
Laravel如何使用Eloquent进行子查询

