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