Java编程面试:15道Singleton与继承执行顺序问题解析

5星 · 超过95%的资源 需积分: 3 8 下载量 95 浏览量 更新于2024-07-31 收藏 65KB DOC 举报
"Java编程语言中的单例模式和类继承执行顺序" 在Java编程中,单例模式(Singleton)是一种常用的软件设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。在面试中,单例模式经常作为考察点出现。以下是两种常见的Java实现单例模式的方式: 1. 饿汉式(Eager Initialization): ```java public class Singleton { private Singleton() {} // 私有化构造器 private static Singleton instance = new Singleton(); // 静态变量在类加载时初始化 public static Singleton getInstance() { return instance; } } ``` 在这个版本中,`Singleton`实例在类加载时就已经创建,因此线程安全且效率较高。 2. 懒汉式(Lazy Initialization): ```java public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } private Singleton() {} // 私有化构造器 } ``` 这个版本的单例在首次调用`getInstance()`时才创建实例,提高了内存效率。但因为使用了`synchronized`关键字,可能会导致性能下降,尤其是在高并发环境下。 关于类继承的执行顺序,Java中当子类继承父类时,构造器的执行顺序遵循以下规则: 1. 首先,会执行父类的静态初始化块(如果有),然后执行子类的静态初始化块。 2. 接着,会执行父类的非静态初始化块(如果有),然后执行子类的非静态初始化块。 3. 最后,执行父类的构造函数,然后执行子类的构造函数。 基于此,给定的代码示例会首先执行父类`FatherClass`的构造函数,输出"FatherClassCreate",接着执行子类`ChildClass`的构造函数,输出"ChildClassCreate"。因此,如果你遇到这样的面试题,预期的输出将是: ``` FatherClassCreate ChildClassCreate ``` 这些面试题旨在检验开发者对Java核心概念的理解,包括面向对象设计原则和类的生命周期。了解并能熟练应用单例模式以及理解类继承的执行顺序,对于Java开发者来说至关重要。