java - 你怎么知道要使用什么类型的构造函数?

标签 java constructor

我知道这可能是一个非常愚蠢的问题,但我查看了很多不同的来源,我似乎无法理解无参数构造函数和带参数构造函数之间的区别。我的印象是,无参数构造函数可以接受任意数量的参数,而具有 2 个参数的构造函数只接受 2 个。

 import java.io.*;      //the File class
 import java.util.*;    //the Scanner class

 public class Distance implements Comparable<Distance>
 {
     private int myFeet, myInches;

     public Distance()
     {
         myFeet = myInches = 0;
     }

     public Distance(int f, int i)
     {
         myFeet = f;
         myInches = i;
     }

     public Distance(Distance arg)
     {
         myFeet = arg.getFeet();
         myInches = arg.getInches();
     }
}

我只是不明白为什么必须同时拥有 Distance(int f, int i) 和 Distance(Distance arg) 以及如何知道要使用哪些构造函数。另外,什么是距离arg? “arg”只是一个占位符变量还是一个实际的 Java 关键字?如果我能得到有关构造函数的解释,那就太好了!

最佳答案

无参数构造函数接受 0 个参数(无参数)。它只是运行构造函数内的代码,您经常会看到它用于将值初始化为一些预先确定的默认值(就像您的将英尺和英寸都设置为 0)。相反,接受参数的构造函数可以在运行时将其值设置为不同的值。

这个构造函数

public Distance(Distance arg)

被称为复制构造函数。它接受同一类的参数,然后将其属性复制到当前正在构造的对象中。

您使用哪种构造函数完全取决于您的需要。有些类不会定义所有类型的构造函数,因此您受到限制。其他人将定义多个构造函数,因此您可以使用情况需要的任何一个。

关于java - 你怎么知道要使用什么类型的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063199/

相关文章:

java - 在 while 循环外部使用变量

java - 在 Eclipse 中管理应用程序的 Lite 和 Pro 版本

javascript - 如何在构造函数中创建简单的 DOM 元素并在调用时将其附加到元素

java - 循环重写的简单方法

Java:从 BufferedImage 到 IplImage

java - Spring 3.1 @Scheduled 随机触发

javascript假实例

Kotlin 数据类二级构造函数初始化 block

实例化时未调用 PHP 构造函数

java - 将数组值放入参数化构造函数 Java