Java-重载-构造函数

时间:2020-02-23 14:36:44  来源:igfitidea点击:

在本教程中,我们将学习Java编程语言中的构造函数重载。

我们在"类-构造函数"教程中了解了构造函数。

构造函数重载类似于方法重载。

什么是Java中的构造方法重载?

在Java类中,当我们有多个具有不同参数声明的构造函数时,则称这些构造函数被重载,并且该过程称为构造函数重载。

语法

class NameOfTheClass {
  
  //constructor overloading

  NameOfTheClass() {
    //some code...
  }

  NameOfTheClass(list_of_params1) {
    //some code...
  }

  NameOfTheClass(list_of_params2) {
    //some code...
  }
}

其中,NameOfTheClass是类的名称,它具有3个与该类共享相同名称但具有不同参数声明的构造函数。

范例1:

在下面的示例中,我们具有PackagingBox类。
我们将使用构造函数重载来初始化其尺寸。

class PackagingBox {

  //member variables
  private double length;
  private double breadth;
  private double height;

  //constructor overloading
  
  //if dimensions not specified
  PackagingBox() {
    this.length = 0;
    this.breadth = 0;
    this.height = 0;
  }

  //if dimensions specified
  PackagingBox(double length, double breadth, double height) {
    this.length = length;
    this.breadth = breadth;
    this.height = height;
  }

  //method
  
  public void showDimensions() {
    System.out.println("Length: " + this.length);
    System.out.println("Breadth: " + this.breadth);
    System.out.println("Height: " + this.height);
  }

  public double getVolume() {
    return this.length * this.breadth * this.height;
  }
}

class ConstructorOverloadingExample {
  public static void main(String[] args) {
    //create object
    
    //no dimension is set
    PackagingBox myBox1 = new PackagingBox();

    System.out.println("Dimension of box 1:");
    myBox1.showDimensions();
    System.out.println("Volume of box 1: " + myBox1.getVolume());
    
    //setting dimension
    PackagingBox myBox2 = new PackagingBox(10, 20, 30);

    System.out.println("Dimension of box 2:");
    myBox2.showDimensions();
    System.out.println("Volume of box 2: " + myBox2.getVolume());
    
  }
}
$javac ConstructorOverloadingExample.java 
$java ConstructorOverloadingExample
Dimension of box 1:
Length: 0.0
Breadth: 0.0
Height: 0.0
Volume of box 1: 0.0
Dimension of box 2:
Length: 10.0
Breadth: 20.0
Height: 30.0
Volume of box 2: 6000.0