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;)。 类的客户端对象不能直接调用私有构造函数。 它们只能由类的方法在内部调用(甚至是私有的)。 您可以拥有一个带有一个或多个参数的私有构造函数。 构造函数的返回类型不能是原始布尔值。 它可以是字符串或类。