Java Singleton模式与继承执行顺序解析

5星 · 超过95%的资源 需积分: 5 1 下载量 140 浏览量 更新于2024-07-26 收藏 65KB DOC 举报
"这是一些关于Java编程题目的介绍,涉及 Singleton 模式和类的执行顺序。" 在Java编程中,Singleton模式是一种常用的设计模式,其主要目标是确保一个类在整个应用程序中只有一个实例。这种模式在很多场景下非常有用,比如全局的日志对象、数据库连接池等。Singleton模式有多种实现方式,但核心思想是限制类的实例化过程。 题目135讨论了Singleton模式的两种常见实现: 1. 第一种形式,也称为饿汉式(Eager Initialization): 在这种实现中,Singleton类的构造函数被声明为私有的,防止外部直接创建实例。同时,类内部创建了一个私有的静态Singleton实例,并通过一个公共的静态方法`getInstance()`返回这个实例。这种方法确保了线程安全,因为实例在类加载时就已创建,不会出现多线程环境下的并发问题。 ```java public class Singleton { private Singleton() {} private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } } ``` 2. 第二种形式,也称为懒汉式(Lazy Initialization): 这种方式延迟了实例的创建,只有在首次调用`getInstance()`时才会创建Singleton实例。为了确保线程安全,这里使用了`synchronized`关键字修饰`getInstance()`方法。这样虽然保证了线程安全,但可能会带来性能影响,因为每次调用都需要同步。 ```java public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` 题目136则涉及类的执行顺序,特别是父类和子类构造器的调用。在Java中,当创建子类实例时,首先会调用父类的无参构造器,然后是子类的构造器。因此,如果有一个父类`FatherClass`和一个继承自`FatherClass`的子类`ChildClass`,如下所示: ```java public class FatherClass { public FatherClass() { System.out.println("FatherClassCreate"); } } public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClassCreate"); } } ``` 当我们创建`ChildClass`的实例时,输出顺序将是: 1. 先调用父类`FatherClass`的构造器,打印`"FatherClassCreate"`。 2. 然后调用子类`ChildClass`的构造器,打印`"ChildClassCreate"`。 所以,当你看到这样的选择题时,正确答案应该是先打印父类的构造器消息,再打印子类的构造器消息。这是Java面向对象编程中的基础知识,对于理解和编写多层继承的代码至关重要。 这些题目考察了Java开发者对于设计模式和类继承的理解,这些都是Java编程中不可或缺的知识点。理解并熟练掌握Singleton模式的不同实现以及类的执行顺序,有助于提升代码的质量和效率。