构造函数重载 Java
⚡ 智能摘要
构造函数重载 Java 允许类声明多个参数列表不同的构造函数,从而为开发人员提供灵活的对象初始化、通过 this() 实现更清晰的代码重用,以及在实例化时需要默认值或自定义值时可预测的行为。
什么是构造函数重载? Java?
构造函数重载 Java 这是一种类声明多个构造函数的技术,这些构造函数的参数列表各不相同。编译器通过分析参数的数量及其数据类型来区分这些构造函数。
类的有效构造函数示例 账户 如下图所示:
Account(int a); Account (int a,int b); Account (String a,int b);
为什么我们需要构造函数重载? Java?
构造函数重载 Java 通过允许一个类中有多个构造函数,每个构造函数都有不同的参数列表,从而提高了灵活性和代码效率。
- 对象创建的灵活性: 构造函数重载允许你根据参数的数量或类型,以各种方式初始化对象。
- Code 可重用性: 你可以通过使用以下方式重用构造函数逻辑:从一个构造函数调用另一个构造函数。 这() 关键词。
- 提高可读性: 重载构造函数通过为不同的初始化需求提供特定选项,使代码更加直观。
- 默认和自定义初始化: 构造函数重载使您可以轻松创建默认对象和自定义初始化对象。
示例:构造函数重载 Java
以下示例演示了构造函数重载 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. 的默认构造函数 课堂演示 is 演示()如果您不提供该变量,编译器将为您创建该变量并将其初始化为默认值。
但是,如果您指定一个参数化构造函数,例如 演示(int a) 并希望使用默认值 演示()必须明确声明。
步骤5) 取消注释代码的第 4-8 行,然后保存、编译并再次运行程序,观察行为的变化。
构造函数链 Java
考虑一个场景,其中基类被子类扩展。每当创建子类的对象时,首先调用父类的构造函数。这称为 构造函数链.
计费示例: 要理解构造函数链和构造函数重载, Java
步骤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 构造函数被创建。 演示() 首先调用父类的构造函数 DemoChild() 孩子接着跑。
预期产量:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
步骤3) 您可能会注意到父构造函数 演示() 默认运行。要调用重载构造函数。 演示(int a) 请改用关键字 “超”.
语法:
super(); --or-- super(parameter list);
计费示例: 如果你的父构造函数像这样 Demo(String Name, int a),您将指定 极好的(”Java”,5). 如果使用,关键字 超 必须是子类构造函数中的第一行代码。
步骤4) 取消第 26 行的注释并运行代码。观察输出结果。
输出:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4

