构造函数重载 Java

构造函数重载 Java?

Java 构造函数重载是一种技术,其中类可以具有任意数量的构造函数,这些构造函数的参数列表不同。编译器通过考虑列表中的参数数量及其类型来区分这些构造函数。

Account 类的有效构造函数示例如下

Account(int a);
Account (int a,int b);
Account (String a,int b);

例子2:理解构造函数重载 Java

步骤1) 在编辑器中输入代码。

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

步骤2) 保存、编译并运行代码。

步骤3) 错误 = ?。尝试调试错误,然后再继续下一步 Java 构造函数重载

步骤4) 每个类都有一个默认值 构造函数 Java. 默认重载构造函数 Java HPMC胶囊 课堂演示 is 演示()。如果您不提供此构造函数,编译器会为您创建它并将变量初始化为默认值。您可以选择覆盖此默认构造函数并将变量初始化为所需的值,如示例 1 所示。

但是如果你指定了参数化构造函数(如 Demo(int a)),并且想要使用默认构造函数 Java Demo(),必须指定它。

换句话说,如果你的重载构造函数 Java 被重写,并且你想使用默认构造函数 Java,需要指定。

步骤5) 取消注释第 4-8 行。保存、编译并运行代码。

为什么我们需要构造函数重载 Java?

构造函数重载 Java 允许一个类中有多个构造函数,每个构造函数都有不同的参数列表。它增强了灵活性并提高了代码效率。

  • 对象创建的灵活性: 构造函数重载允许您根据参数的数量或类型以各种方式初始化对象。
  • 代码可重用性: 您可以通过使用 this() 关键字从另一个构造函数调用一个构造函数来重用构造函数逻辑。
  • 提高可读性: 重载构造函数通过为不同的初始化需求提供特定的构造函数选项,使代码更加直观。
  • 默认和自定义初始化: 构造函数重载允许您轻松创建默认和自定义初始化的对象。

常见问题

构造函数 是一种特殊方法,用于初始化新创建的对象,在为对象分配内存后立即调用。它可用于在创建对象时将对象初始化为所需值或默认值。程序员不必为类编写构造函数。

如果没有为类提供用户定义的构造函数,编译器会将成员变量初始化为其默认值。

  • 数字数据类型设置为 0
  • char 数据类型设置为空字符('\0')
  • 引用变量设置为空

  1. 它有 一样的名字 作为班级
  2. 它不应该返回一个值,甚至不应该 无效

例子1:创建你的第一个构造函数 Java

步骤1) 在以下位置输入构造函数程序 Java 编辑.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

步骤2) 保存、运行并编译构造函数程序 Java 并观察输出。

预期产量:

Inside Constructor
Value1 === 10
Value2 === 20

考虑一个场景,其中基类被子类扩展。每当创建子类的对象时,首先调用父类的构造函数。这称为 构造函数链。

例如3: 理解构造函数链

步骤1) 将以下代码复制到编辑器中。

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

步骤2) 运行代码。由于构造函数链,当创建子类 DemoChild 的对象时,首先调用父类的构造函数 Demo(),然后创建子类的构造函数 DemoChild()。

预期产量:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

步骤3) 你可能会发现父类 Demo 的构造函数被重写了。如果你想在创建子对象时调用重写的构造函数 Demo(int a) 而不是默认构造函数 Demo(),该怎么办?

在这种情况下,您可以使用关键字 “超” 调用父类重写的构造函数。

句法:-

super();
--or--
super(parameter list);

计费示例: 如果你的构造函数就像 演示(字符串名称,int a),您将指定 极好的(”Java”,5). 如果使用,关键字 super 必须是第一行代码 在子类的构造函数中。

步骤4) 取消注释第 26 行并运行代码。观察输出。

输出:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4