Java构造函数

Java构造函数是特殊的方法(无返回类型),可让您在对象状态可以由应用程序内的其他类使用之前完全初始化。Java中的构造方法是使用new关键字调用的。

让我们更深入地了解构造函数。

目录

Java构造函数
的构造函数类型是什么? 
	i)默认构造函数(无参数构造函数) 
	ii)参数化构造
函数
构造函数规则构造函数链接
私有构造函数

Java中的构造函数是什么

构造函数是一种特殊的方法,类似于(没有确切的方法)构造,它可以帮助程序员在对象可被应用程序中的其他对象使用之前编写对象初始化代码。

每当应用程序需要任何类的新实例时,JVM就会在堆内部分配一个内存区域。然后,JVM执行调用的构造函数(类可以具有多个构造函数)并初始化对象状态。在构造函数内部,您可以访问所有对象属性并将其分配给它们的默认值或任何所需的值。

阅读更多:Java内存模型

构造函数的类型

  1. 默认构造函数(无参数构造函数)如果程序员在类定义中不提供任何构造函数– JVM在运行时为该类提供默认构造函数。

    程序员还可以覆盖类中的默认构造函数。让我们看一下语法。

    public class Employee
    {  
        public Employee() {
            
        }
    }

    在默认构造函数中,构造函数的名称必须与类名称匹配,并且不应具有任何参数。

  2. 通过构造函数重载进行参数化构造函数如上所述,一个类中可以有多个构造函数。这可以通过重载构造函数来实现。在构造函数重载中,您可以根据要求传递参数列表,即可以初始化类的数量。
    public class Employee {
        private String firstName;
        private String lastName;
        public Employee() { //constructor 1
        }
        public Employee(String firstName) { //constructor 2
        }
        public Employee(String firstName, String lastName) { //constructor 3
        }
    }

    在上面的类中,我们定义了3个构造函数来处理3种情况–应用程序可能需要如何创建employee对象,即不使用名称,仅使用名字以及同时使用名字和姓氏。

    Employee employee1 = new Employee();
    Employee employee2 = new Employee("Lokesh");
    Employee employee3 = new Employee("Lokesh", "Gupta");

构造规则

在Java中创建构造函数的强制性规则很少。

  1. 构造函数名称必须与类的名称相同。
  2. 构造函数定义中不能有任何返回类型。
  3. 构造函数中不能有任何return语句。
  4. 构造函数可以由不同的参数重载。
  5. 如果要使用super()超类构造函数,则它必须是构造函数中的第一条语句。

构造器链接

在Java中,可以在构造函数内调用其他构造函数。就像方法调用一样,但是没有任何引用变量(显然,由于实例已完全初始化)。

现在,我们可以调用相同类或父类的构造函数。两者使用不同的语法。

调用同一个类的构造函数

要从同一类调用其他构造函数,请使用关键字。例如,

public Employee() {
    
}
public Employee(String firstName) {
    this();     //calling default constructor
}
public Employee(String firstName, String lastName) {
    this(firstName);    //calling constructor with single argument of String type
}

调用超类构造函数

要从父类或父类调用构造函数,请使用super关键字。super关键字的用法类似于this关键字–唯一的区别是super引用超类和this当前实例。

public Employee() {
    //refer to Object class constructor
    //as it is parent class for every class
    super();   
}

私人建筑商

有时您想保护构造函数以免被其他类调用。总之,您希望任何人都不能创建该类的新实例。

为什么有人要那个?好吧,这是单例模式所必需的。在单例中,应用程序希望只有任何一个类的一个实例。

常见的单例类定义如下所示:

public class DemoSingleton implements Serializable
{
    private static final long serialVersionUID = 1L;
 
    private DemoSingleton() {
        // private constructor
    }
 
    private static class DemoSingletonHolder {
        public static final DemoSingleton INSTANCE = new DemoSingleton();
    }
 
    public static DemoSingleton getInstance() {
        return DemoSingletonHolder.INSTANCE;
    }
 
    protected Object readResolve() {
        return getInstance();
    }
}

这就是java中的构造函数。如果您有任何疑问,请在评论区留言,我会一一解答。

学习愉快!

saigon has written 1440 articles

Leave a Reply