From 7cb6cd4389ac4831f237e397bdc150ac498479ef Mon Sep 17 00:00:00 2001 From: Joe <736777445@qq.com> Date: Mon, 24 Dec 2018 13:39:31 +0800 Subject: [PATCH] =?UTF-8?q?Update=2004.=20=E4=BD=BF=E7=94=A8=E7=A7=81?= =?UTF-8?q?=E6=9C=89=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E9=9D=9E=E5=AE=9E=E4=BE=8B=E5=8C=96.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04. 使用私有构造方法执行非实例化.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04. 使用私有构造方法执行非实例化.md b/04. 使用私有构造方法执行非实例化.md index f558fcc..7746dfd 100644 --- a/04. 使用私有构造方法执行非实例化.md +++ b/04. 使用私有构造方法执行非实例化.md @@ -6,7 +6,7 @@   这样的实用类(utility classes)不是设计用来被实例化的:一个实例是没有意义的。然而,在没有显式构造方法的情况下,编译器提供了一个公共的、无参的默认构造方法。对于用户来说,该构造方法与其他构造方法没有什么区别。在已发布的 API 中经常看到无意识的被实例的类。 -  **试图通过创建抽象类来强制执行非实例化是行不通的。**该类可以被子类化,子类可以被实例化。此外,它误导用户认为该类是为继承而设计的 (条目 19)。不过,有一个简单的方法来确保非实例化。只有当类不包含显式构造方法时,才会生成一个默认构造方法,**因此可以通过包含一个私有构造方法来实现类的非实例化:** +  **试图通过创建抽象类来强制执行非实例化是行不通的。** 该类可以被子类化,子类可以被实例化。此外,它误导用户认为该类是为继承而设计的 (条目 19)。不过,有一个简单的方法来确保非实例化。只有当类不包含显式构造方法时,才会生成一个默认构造方法,**因此可以通过包含一个私有构造方法来实现类的非实例化:** ```Java // Noninstantiable utility class