Java参数化构造函数

标签 java constructor

我是编程新手,也是 Java 新手。我现在正在尝试的是使用参数化构造函数,然后通过特定方法使用创建的对象。这是我的代码:

public class Car {
int fuelcap;
int mpg;

Car(int f, int m) {      //here
    fuelcap = f;         //and here
    mpg = m;             //and here
}

int range() {
    return mpg * fuelcap;
}

public static void main(String[] args) {
    Car sedan = new Car(16, 21);
    Car sportscar = new Car(14, 16);
    System.out.println(sedan.range());
    System.out.println(sportscar.range());

}

}

问题是,我不知道为什么构造函数 Car - 'int f' 和 'int m' 的参数与字段: 'int Fuelcap;' 不同 'int mpg;'。我们不能像这样创建构造函数吗:

Car(int fuelcap, int mpg){
}

然后在创建对象时将值传递给这些参数?

最佳答案

不,你不能。您必须将构造函数参数分配给构造函数主体中的类字段,否则它们将不会被保存。这就是 Java 的工作原理。构造函数参数没有什么“神奇”之处。

此外,请注意正确的风格:

Car(int fulecap, int mpg) {     
    this.fuelcap = fuelcap;         
    this.mpg = mpg;            
}

如果您的字段比 ctor 参数多,那也没关系。只需将构造函数视为创建对象后调用的普通方法即可。 (最后一句话只是有点正确,但会为您提供用于此目的的正确想法。)

关于Java参数化构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37803419/

相关文章:

java - AndEngine:只是黑色背景,字体不显示

java - 为什么语言设计者允许界面包含字段?

java gwt不显示光标

java - 如何使用 JavaParser 识别构造函数?

c++ - 在默认构造函数中声明 arr 时未在此范围内声明“arr”

java - 比较等于星号的字符串

java - 用于存储计量数据的 ELK 堆栈

java - 在 JavaFX FXML Controller 中实现构造函数

PHPStorm 对 __construct() 的@return void 发出尖叫

c++ - 为什么这个使用构造函数和析构函数的 C++ 程序显示错误?