Java Singleton模式与继承执行顺序解析
"java代码与编程题." 在Java编程中,Singleton模式是一种常用的软件设计模式,它的主要目标是确保类的单例性,即在整个应用程序中,只有一个类的实例存在。这通常用于那些需要全局访问或者资源管理的场景。Singleton模式有多种实现方式,以下是两种常见的形式: **第一种形式**(饿汉式): 在这种实现中,Singleton类的实例在类加载时就创建了,因此它是线程安全的。这种实现方式保证了无论何时,只要Singleton类被加载,就会有一个唯一的实例存在。 ```java public class Singleton { private Singleton() {} // 私有构造函数,防止外部直接创建实例 // 静态私有变量,保存Singleton实例 private static Singleton instance = new Singleton(); // 提供公共的静态方法,返回Singleton实例 public static Singleton getInstance() { return instance; } } ``` **第二种形式**(懒汉式): 这种实现方式延迟了Singleton实例的创建,只有当第一次调用`getInstance()`方法时才创建实例。这种方式提高了效率,因为如果Singleton从未被使用,就不会创建实例。但是,如果不加同步控制,这种方法在多线程环境下可能不安全。 ```java public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } private Singleton() {} // 私有构造函数 } ``` 在第二种形式中,使用`synchronized`关键字保证了线程安全,但同步操作会带来性能开销。为了进一步优化,可以采用双检锁/双重校验锁(DCL,即Double-Check Locking)或者静态内部类等方式来实现线程安全且高效的Singleton。 关于继承时类的执行顺序问题,Java中的构造函数调用遵循以下规则: 1. 当创建子类对象时,首先会调用父类的无参构造函数(如果父类没有无参构造函数,编译会报错)。 2. 如果父类构造函数中有参数,那么子类必须在构造函数中显式调用父类的带参数构造函数,或者父类有无参构造函数供子类调用。 3. 父类构造函数执行完毕后,再执行子类的构造函数。 例如在给出的代码中,`FatherClass`有一个公共的无参构造函数,当创建`ChildClass`对象时,会先调用`FatherClass`的构造函数,输出`FatherClassCreate`,然后执行`ChildClass`的构造函数。但这里的`ChildClass`构造函数中没有实际代码,所以不会有任何输出。因此,如果这段代码被运行,只会打印`FatherClassCreate`。
![](https://csdnimg.cn/release/download_crawler_static/9702420/bg4.jpg)
剩余19页未读,继续阅读
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/f66fcfcb88d14064b701984d9e82f651_yuefeips.jpg!1)
- 粉丝: 11
- 资源: 123
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)