Java 中的私有构造函数:用示例解释用例
已发表: 2021-04-09目录
介绍
Java 中的私有构造函数用于限制对象的创建。 它是用于静态成员类的特殊实例构造函数。 如果构造函数被声明为私有,那么它的对象只能从声明的类中访问。 您不能从构造函数类外部访问其对象。
私有构造函数用例
Java中的私有构造函数只能从类内部访问。 您不能从任何其他类访问私有构造函数。 如果对象尚未初始化,那么您可以编写一个公共函数来调用私人讲师。 如果对象已经初始化,那么您只能返回该对象的实例。 Java 中的私有构造函数有以下用例:
- 您可以将它与仅限静态成员的类一起使用。
- 您可以将它与静态实用程序或常量类一起使用。
- 您可以使用它来提供单例类。
- 您可以使用它来分配名称,例如,使用工厂方法创建。
- 您可以使用它来防止子类化。
单例类
Java 中的私有构造函数用于创建单例类。 单例类是 Java 中将声明的类的对象数限制为一个的类。 Java 中的私有构造函数确保一次只创建一个对象。 它将类实例限制在声明的类中,这样就不能在声明的类之外创建任何类实例。 您可以在网络和数据库连接概念中使用单例类。
示例 1:以下示例演示Java 中的私有构造函数如何限制单例类中的对象数量。
导入java.io.*; 类新测试类 { 静态 newTestClass 对象 = null; 公共int a = 20; 私人新测试类(){ } //我们创建了一个私有构造函数 静态公共 newTestClass displayInstance() /** *displayInstance() 是我们将用来创建实例的公共方法。 *调用此方法从类外部访问这些实例。 */ { 如果(对象 == 空) 对象 = 新的 newTestClass(); //创建单例类对象 返回对象; } } 公共类 SingletonClass { 公共静态无效主要(字符串参数[]){ newTestClass instance1 = newTestClass.displayInstance(); //通过调用公共方法显示单例类的实例 newTestClass instance2 = newTestClass.displayInstance(); //通过调用公共方法显示单例类的实例 实例1.a = 实例1.a + 26; System.out.println(“创建的实例 1 具有以下值 = ” + instance1.a); System.out.println(“创建的实例 2 具有以下值 = ” + instance2.a); } } |
输出
创建的实例 1 具有以下值 = 46 创建的实例 2 具有以下值 = 46 |
在上面的程序中,实例 2 的值会在我们更新 instance1 对象值时自动更新。 这个观察表明 instance1 和 instance 2 都引用同一个对象。
示例 2:以下示例演示Java 中的私有构造函数如何确保一次创建的对象不超过一个。
// 用于单例类实现的 Java 程序 导入java.io.*; 公共类 newTestClass { 私有静态 newTestClass var=null; 私人新测试类(){ //类内部可以访问Private Constructor } 公共静态 newTestClass testObject(){ // 此方法确保一次只创建一个对象 如果(变量==空){ var= 新的 newTestClass(); } 返回变量; } 公共无效显示(){ System.out.println(“这是一个使用 Singleton 类的 Private 构造函数的例子。”); } 公共静态无效主要(字符串参数[]){ newTestClass newObject= newTestClass.testObject(); newObject.display(); } } |
输出
这是使用 Singleton 类的 Private 构造函数的示例。
示例 2: Java 中的 Private Constructor用于限制类实例的数量。
此示例演示如何通过将构造函数声明为私有来限制类实例的数量。
公共类restrictInstanceCreationClass { 公共静态无效主要(字符串[]参数){ 限制实例对象; 诠释一个= 1; 而(a<=20) { obj = RestrictInstance.getLimInstance(); 一个++; } } } 类限制实例 { 公共静态 int varCount = 0; /** *创建增加计数的私有构造函数 * 每次创建实例后的 varCount 变量 */ 私人限制实例(){ 变量计数++; System.out.println(“实例号” + varCount + ”已创建。”); }
公共静态同步 RestrictInstance getLimInstance() { 如果(变量计数 <5){ 返回新的限制实例(); } System.out.println(“已达到最大实例限制。您不能再创建实例。”); System.gc(); 返回空值; } /** *删除实例并减少计数 *varCount 变量的 */ 公共无效finalise() { System.out.println(“实例被删除。”); 变量计数-; }} |
输出
实例编号 1 已创建。 创建实例编号 2。 实例号 3 已创建。 实例号 4 已创建。 实例编号 5 已创建。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 实例被删除。 实例被删除。 实例被删除。 实例被删除。 已达到最大实例限制。 您不能再创建实例。 实例编号 1 已创建。 创建实例编号 2。 实例号 3 已创建。 实例号 4 已创建。 实例编号 5 已创建。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 已达到最大实例限制。 您不能再创建实例。 实例被删除。 实例被删除。 实例被删除。 实例编号 1 已创建。 创建实例编号 2。 实例号 3 已创建。 实例号 4 已创建。 实例编号 5 已创建。 |
从世界顶级大学在线学习软件课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
结论
本文中使用的代码仅用于说明目的。 您可以根据需要修改示例中给出的语句。 在这篇博客中,我们讨论了Java 中的私有构造函数如何限制单例类中的对象数量。
您可以尝试代码来加强您的Java构造函数的知识。 如果您想深入了解 Java,请查看 upGrad Executive PG Program in Full Stack Development课程,该课程专为工作专业人士设计,以获得该领域的专业知识。
什么是编程中的构造函数?
编程中的构造函数是在初始化对象时自动调用的方法。 构造函数的目的是初始化对象。 构造函数应该始终是公共的,并且它们被声明为没有任何返回类型。 构造函数用于初始化对象并执行其他只能完成一次的任务。 构造函数还用于执行类的初始化,即执行创建类的任务。
Java中的构造函数有哪些类型?
Java中有五种构造函数。 它们是: 无参数构造函数:它有一个默认实现,在类加载到内存时执行。 没有无参数构造函数的类必须声明为 final。 默认构造函数:这个构造函数是在用 Java 编写类时创建的,用于将类的所有变量(属性)初始化为其默认值(零或空)。 参数化构造函数:这个构造函数用于从一些值初始化一些变量。 无返回值的构造函数:用于从一些值初始化一些变量。 带返回值的构造函数:用于从一些值初始化一些变量,并返回一个值。
Java中的私有构造函数是什么?
私有构造函数可用于创建不可变类。 在不使用私有构造函数的情况下,我们可以通过声明类 final 并将所有属性创建为 final 来创建不可变类(例如 private final String name;)。 类的客户端对象不能直接调用私有构造函数。 它们只能由类的方法在内部调用(甚至是私有的)。 您可以拥有一个带有一个或多个参数的私有构造函数。 构造函数的返回类型不能是原始布尔值。 它可以是字符串或类。