在Java中使用静态块进行构造函数重载

王林
王林 转载
2023-09-06 14:41:06 1020浏览

在Java中使用静态块进行构造函数重载

实例化对象的行为会调用其对应的构造函数,这是面向对象编程中许多功能的基础。值得注意的是,在使用对象的任何程序中,都会无一例外地存在一个默认构造函数 - 编译器会自动创建,以便无缝地使用。

在本次讨论中,我们将深入研究 Java 中静态块的构造函数重载。构造函数重载是在一个类中定义多个具有不同参数的构造函数的概念。

语法

Public class class_name {
   Class_name() {
   }
   Class_name(par1, par2..) {
   }
}

使用带有静态块的构造函数在对象初始化期间提供了更多的功能和灵活性。

算法

使用静态块重载构造函数,请按照以下步骤操作 -

  • 第一步 - 创建一个具有不同参数的多个构造函数的类。

  • 步骤2 - 使用“static”关键字创建一个静态块

    这个块在类加载到内存时执行一次。

  • 第 3 步- 加载类时,首先执行静态块,然后在创建对象时执行构造函数。

  • 第 4 步 - 将根据提供的参数调用构造函数。

方法一:定义单独的静态块

这种方法涉及将静态块和重载构造函数分开定义。

Example

的中文翻译为:

示例

Class Class_name{
   Static {
   }
   Public class_name(){
   }
   Public class_name(int value) {
   }
   Public class_name(string name) {
   }
   //Other methods
}

在这种方法中,类可以具有带有不同参数列表的重载构造函数,其中还包括初始化代码。还有一个单独的静态块用于类的静态初始化。该块将被执行一次。

示例

在这个例子中,我们将展示方法1

class Emp { int id, exp;String name;static String company;
   static { company = "XYZ Corp"; }
   public Emp(){
      System.out.println("-"
                           + "\t"
                           + "-"
                           + "\t"
                           + "-"
                           + "\t"
                           + "\t"
                           + "-"); }
   public Emp(int id, String name){ System.out.println(id + "\t" + name + "\t"
                           + company + "\t" + exp); }
   public Emp(int id, String name, int exp) {
      System.out.println(id + "\t" + name + "\t"  + company + "\t" + exp); }
}
public class Way2Class {
   public static void main(String[] args) {
      System.out.println("Id"
                           + "\t"
                           + "Name"
                           + "\t"
                           + "Company"
                           + "\t"
                           + "Exp");
      Emp obj1 = new Emp(001, "Apoorva");
      Emp obj2 = new Emp(004, "Anu", 10);
      Emp obj3 = new Emp();
   }
}

输出

Id	Name	Company	Exp
1	Apoorva	XYZ Corp	0
4	Anu	XYZ Corp	10
-	-	-		-

说明

在一家公司中,具有任意年数经验的员工都将在同一家公司工作。因此,如果没有在公司变量中传递任何值,那么它会自动设置与公司相同的公司名称。为此,我们使用静态块。

方法 2:从构造函数调用静态方法

要执行共享初始化代码,您可以在类中声明静态方法并从构造函数中调用它们。

Example

的中文翻译为:

示例

public class Way2Class {
   private int value;
   private String name;

   private static void initialize() {
      System.out.println("Common initialization code");
   }

   public Way2Class() {
      initialize();
      value = 0;
      name = "Default";
      System.out.println("No-arg constructor called");
   }

   public Way2Class(int value) {
      initialize();
      this.value = value;
      name = "Value";
      System.out.println("Int constructor called");
   }

   public Way2Class(String name) {
      initialize();
      value = 0;
      this.name = name;
      System.out.println("String constructor called");
   }

   public static void main(String[] args) {
      Way2Class obj1 = new Way2Class();
      Way2Class obj2 = new Way2Class(10);
      Way2Class obj3 = new Way2Class("Hello");
   }
}

输出

Common initialization code
No-arg constructor called
Common initialization code
Int constructor called
Common initialization code
String constructor called

说明

本图中的 Way2Class 类包含三个构造函数,每个构造函数都调用静态的initialize () 方法来执行共享的初始化代码。每个构造函数都会调用类内指定的静态函数initialize()。根据给定的参数,在对象创建过程中调用适当的构造函数,并使用静态方法initialize()来执行公共初始化代码。

方法1和方法2的比较

标准

方法 1

方法2

类型

单独的静态块

从构造函数调用静态方法

方法

重复使用具有不同构造函数的常见静态方法。

独立的静态方法与共同的构造函数。

方法逻辑

构造函数重载与静态块

构造函数重载与静态块

结论

虽然方法 2(从构造函数调用的静态方法)在代码组织和继承方面提供了更大的灵活性,但方法 1(具有公共代码的多个构造函数)更加独立且简单。两种方法之间的选择取决于当前项目的具体要求和设计考虑。

以上就是在Java中使用静态块进行构造函数重载的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:tutorialspoint,如有侵犯,请联系admin@php.cn删除