Java笔试编程题:Singleton模式与类执行顺序解析

4星 · 超过85%的资源 需积分: 9 86 下载量 66 浏览量 更新于2024-10-22 收藏 283KB PDF 举报
"Java编程题,包括Singleton设计模式的实现和类继承时的执行顺序问题。" 在Java编程中,Singleton模式是一种常见的设计模式,它的核心目标是确保一个类在整个应用中只有一个实例,并提供全局访问点。在题目中提到了Singleton模式的两种常见实现方式。 135、Singleton模式实现: 第一种形式,也被称为"饿汉式"Singleton,它在类加载时就完成了实例化,线程安全,但可能会造成不必要的内存浪费,因为即使程序从未使用Singleton,也会创建实例。 ```java public class Singleton { private Singleton() {} // 私有构造器 private static Singleton instance = new Singleton(); // 静态私有实例 public static Singleton getInstance() { return instance; } // 公共静态方法获取实例 } ``` 第二种形式,也称为"懒汉式"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; } } ``` 更进一步,可以使用双重检查锁定(Double-Check Locking)来优化懒汉式Singleton,既保证线程安全又提高效率: ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 136、类继承时的执行顺序问题: 在Java中,当创建子类对象时,会先执行父类的构造器,然后执行子类的构造器。这是因为Java的构造器链机制,确保了在子类实例化前父类的初始化。所以,如果有一个如下的类结构: ```java package test; public class FatherClass { public FatherClass() { System.out.println("FatherClassCreate"); } } package test; import test.FatherClass; public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClassCreate"); } } ``` 当你创建`ChildClass`的对象时,首先会打印`"FatherClassCreate"`(父类构造器),然后打印`"ChildClassCreate"`(子类构造器)。这是因为在子类构造器中,默认会调用父类的无参构造器(如果没有显式指定的话)。因此,无论何时创建`ChildClass`的实例,都会先执行父类的构造器,然后执行子类的构造器。 以上是Java编程题中的Singleton模式实现和类继承执行顺序的详细解释,这些知识点对于理解和解决Java面试及笔试中的相关问题至关重要。