Java编程中的构造器链


构造器链是在用户在特定方法中初始化对象时注入构造器的特定序列。当我们一个接一个地调用大量构造器时,仅基于实例类,就可以使用此过程。此过程是与继承相关的另一种方法,其中子类构造器的任务是调用超类构造器。

在Java中可以通过两种方式执行构造器链:

  • 在同一个类中 - 此过程可以通过使用`this()`关键字来完成,该关键字用于同一个类中的构造器。

  • 从基类 - 通过使用`super()`关键字,我们可以从基类调用构造器。

这是一个例子:

ConstructorChaining(int x){
	System.out.println("Parameterized (First Parameter) Constructor Of
	Class.");
	System.out.println("The Value Of x Is "+x);
}
ConstructorChaining(int x, int y){
	this();
	System.out.println("Parameterized (Second Parameters) Constructor Of
	The Class.");
	System.out.println("The Value Of x And y Is " + x + "And " + y + ". "
	+ "The Sum Of x And y Is " + (x + y) );
}

在Java中执行构造器链的算法

在这个可能的算法中,我们将向您展示如何在Java环境中执行构造器链过程。通过使用这个可能的算法,我们将构建一些语法,通过这些语法,我们将能够用各种方法描述问题陈述。

  • 步骤1 - 开始该过程。

  • 步骤2 - 声明过程包。

  • 步骤3 - 导入并使用Java包来运行该过程。

  • 步骤4 - 声明一个公共类。

  • 步骤5 - 声明第一个默认构造器。

  • 步骤6 - 此构造器将调用同一个类中的另一个构造器。

  • 步骤7 - 调用另一个构造器。

  • 步骤8 - 调用参数化构造器作为过程。

  • 步骤9 - 声明`this()`运算符。

  • 步骤10 - 声明另一个参数化构造器作为对。

  • 步骤11 - 提及print方法。

  • 步骤12 - 声明一个字符串参数。

  • 步骤13 - 首先调用默认构造器。

  • 步骤14 - 为了进一步调用无参数构造器。

  • 步骤15 - 获取Derived obj = new Derived()的值。

  • 步骤16 - 获取返回值并终止该过程。

在Java中执行构造器链的语法

class A {
	public int a;
	public A() {
		this(-1);
	}
	public A(int a) {
		this.a = a;
	}
	public String toString() {
		return "[ a= " + this.a + "]";
	}
}
class B extends A {
	public int b;
	public B() {
		this(-1,-1);
	}
	public B(int a, int b) {
		super(a);
		this.b = b;
	}
	public String toString() {
		return "[ a= " + this.a + ", b = " + b + "]";
	}
}
public class Tester {
	public static void main(String args[]) {
		A a = new A(10);
		System.out.println(a);
		B b = new B(11,12);
		System.out.println(b);
		A a1 = new A();
		System.out.println(a1);
		B b1 = new B();
		System.out.println(b1);
	}
}

在上面这个可能的语法中,我们试图向您展示如何在Java环境中创建和执行构造器链方法。通过使用上面提到的语法,我们正在朝着一些可能的解决方法前进,以有效的方式解决问题陈述。

遵循的方法

  • 方法1 - Java程序演示使用`this()`、`super()`、初始化块关键字在同一个类中进行构造器链

  • 方法2 - Java程序构建一个逻辑,其中一个构造器使用`this`关键字调用另一个构造器,并在对象上进行操作

方法1:使用`this()`、`super()`、初始化块关键字演示在同一个类中进行构造器链

`this()`方法的使用

在这个可能的方法中,我们将应用`this()`方法来演示在同一个类中进行构造器链。

public Person(String firstName, String middleName, String lastName, int age) {
	this.firstName = firstName;
	this.middleName = middleName;
	this.lastName = lastName;
	this.age = age;
}

示例

//Java program to illustrate the constructor chaining within same class Using this() keyword
public class ARBRDD{
   ARBRDD(){
      this(7);
      System.out.println("The Default Constructor Value Is Here!");
   }
   ARBRDD(int x){
      this(7, 16);
      System.out.println(x);
   }
   ARBRDD(int x, int y){
      System.out.println(x * y);
   }
   public static void main(String args[]){
      new ARBRDD();
   }
}

输出

112
7
The Default Constructor Value Is Here!

构造器顺序交换方法的使用

在这个可能的方法中,我们将应用`this()`关键字来演示在同一个类中进行构造器链。通过这个,我们还可以部署构造器的更改顺序。

示例

//Java program to illustrate Constructor Chaining within same class Using this() keyword and also deploy the changing order of constructors
public class ARBRDD{
   ARBRDD(){
      System.out.println("Default Value Is Here!");
   }
   ARBRDD(int x){
      this();
      System.out.println(x);
   }
   ARBRDD(int x, int y){
      this(5);
      System.out.println(x * y);
   }
   public static void main(String args[]){
      new ARBRDD(7, 16);
   }
}

输出

Default Value Is Here!
5
112

`super()`方法的使用

在这个可能的方法中,我们将应用`super()`类来演示对其他类的构造器链。

示例

//Java program to illustrate Constructor Chaining to other class using super() keyword
class ARBRDD{
   String name;
   ARBRDD(){
      this("");
      System.out.println("No-argument Constructor Of The" + " Base Class Is Here");
   }
   ARBRDD(String name){
      this.name = name;
      System.out.println("Calling The Parameterized Constructor" + " Of The Base Class>>");
   }
}
public class Derived extends ARBRDD{
   Derived(){
      System.out.println("No-argument Constructor Value " +
      "Of Derived Here");
   }
   Derived(String name){
      super(name);
      System.out.println("Calling The Parameterized " +
      "Constructor Of Derived Value!!");
   }
   public static void main(String args[]){
      Derived obj = new Derived("TEST");
   }
}

输出

Calling The Parameterized Constructor Of The Base Class>>
Calling The Parameterized Constructor Of Derived Value!!

初始化块方法的使用

在这个可能的方法中,我们将应用初始化块方法,通过该方法,将与每个构造器值一起执行公共资源。

示例

//Java program to demonstrate using Init block where common resources to be executed with the every constructor value
public class ARBRDD{{
      System.out.println("Init Block Value Is Here Now!");
   }
   ARBRDD(){
      System.out.println("Default Value Displaying Now!!");
   }
   ARBRDD(int x){
      System.out.println(x);
   }
   public static void main(String[] args){
      new ARBRDD();
      new ARBRDD(071610);
   }
}

输出

Init Block Value Is Here Now!
Default Value Displaying Now!!
Init Block Value Is Here Now!
29576

阻塞移除方法的使用

在这个可能的方法中,我们将应用阻塞方法,以便在第一次阻塞发生后从阻塞中移除元素。

示例

//Java program to perform the removing the blockage to be executed after the first block
public class ARBRDD{{
      System.out.println("Init Value");
   }
   ARBRDD(){
      System.out.println("Default Value Is Here");
   }
   ARBRDD(int x){
      System.out.println(x);
   }{
      System.out.println("Second Value Is Here Now!");
   }
   public static void main(String args[]){
      new ARBRDD();
      new ARBRDD(071610);
   }
}

输出

Init Value
Second Value Is Here Now!
Default Value Is Here
Init Value
Second Value Is Here Now!
29576

方法2:构建一个逻辑,其中一个构造器调用另一个构造器

另一个构造器调用方法的使用

在这个可能的方法中,我们将应用一个逻辑,其中一个构造器使用`this`关键字调用另一个构造器来构建一个员工记录管理系统。

public Customer(String firstName, String lastName, int age, String CardId) {
   this(firstName, null, lastName, age, CardId);
}
public Customer(String firstName, String middleName, String lastName, int age,
String CardId) {
   super(firstName, middleName, lastName, age);
   this.CardId = CardId;
}

示例1

//Java program to build a logic where one constructor is calling another constructor using this keyword.
public class Employee{
   public String empName;
   public int empSalary;
   public String address;
   public Employee(){
      this("ARB");
   }
   public Employee(String name){
      this(name, 07102001);
   }
   public Employee(String name, int sal){
      this(name, sal, "DINAJPUR");
   }
   public Employee(String name, int sal, String addr){
      this.empName=name;
      this.empSalary=sal;
      this.address=addr;
   }
   void disp(){
      System.out.println("Employee Name Is: "+empName);
      System.out.println("Employee Total Salary Is: "+empSalary);
      System.out.println("Employee Parmanent Address Is: "+address);
   }
   public static void main(String[] args){
      Employee obj = new Employee();
      obj.disp();
   }
}

输出

Employee Name Is: ARB
Employee Total Salary Is: 1868801
Employee Parmanent Address Is: DINAJPUR

示例2

//Java code to declare a constructor without arguments which is invoked when we create an object and perform the constructor chaining
class Constructer{
   Constructer(){
      System.out.println("Constructer With The Zero Value Arguments");
   }
   Constructer(int x){
      System.out.println("Constructer With The Argument One Type Int Value "+"("+x +")");
   }
   Constructer(double x){
      System.out.println("Constructer With The Argument Of The One Type Double Value"+"("+x +")");
   }
   Constructer(int x,int y){
      System.out.println("Constructer With Two Arguments Of The Type Int"+"("+x+","+y+")");
   }
   Constructer(double x,double y){
      System.out.println("Constructer With Two Argument Type Double"+"("+x+","+y+")");
   }
   Constructer(double x,int y){
      System.out.println("Constructer With Two Arguments Type Double and Int Value "+"("+x+","+y+")");
   }
   Constructer(int x,double y){
      System.out.println("Constructer With Two Arguments Type Int and Double"+"("+x+","+y+")");
   }
   Constructer(int x,int y,double z){
      System.out.println("Constructer With Three Arguments Two Of Type Int and One Is Double"+"("+x+","+y+","+z+")");
   }
}
public class ARBRDD{
   public static void main(String args[]){
      Constructer c1=new Constructer();
      Constructer c2=new Constructer(1);
      Constructer c3=new Constructer(1.0);
      Constructer c4=new Constructer(2,3);
      Constructer c5=new Constructer(3.4,4.5);
      Constructer c6=new Constructer(1.2,2);
      Constructer c7=new Constructer(2,3.2);
      Constructer c8=new Constructer(1,2,3);
   }
}

输出

Constructer With The Zero Value Arguments
Constructer With The Argument One Type Int Value (1)
Constructer With The Argument Of The One Type Double Value(1.0)
Constructer With Two Arguments Of The Type Int(2,3)
Constructer With Two Argument Type Double(3.4,4.5)
Constructer With Two Arguments Type Double and Int Value (1.2,2)
Constructer With Two Arguments Type Int and Double(2,3.2)
Constructer With Three Arguments Two Of Type Int and One Is Double(1,2,3.0)

结论

在Java编程领域,构造器链是从一个构造器调用另一个构造器的过程。在今天的文章中,我们学习了构造器链方法。通过使用上面提到的语法和算法,我们构建了一些Java代码来有效地解释问题陈述。

更新于:2023年12月29日

811 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告