我是编程新手,也是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){
}
然后在创建对象时将值传递给这些参数?
答案 0 :(得分:2)
另外,要注意正确的风格:
Car(int fulecap, int mpg) {
this.fuelcap = fuelcap;
this.mpg = mpg;
}
如果你有更多的字段,那么ctor参数,这很好。只需将构造函数视为在创建对象后调用的常规方法。 (最后一句话只是有点真实,但会为你提供正确的想法。)
答案 1 :(得分:1)
当然可以,但在这种情况下,您的构造函数应如下所示:
public Car(int fuelcap, int mpg){
this.fuelcap = fuelcap;
this.mpg = mpg;
}
答案 2 :(得分:0)
你有实例变量fuelcap
和mpg
,但如果你使用你提到的构造函数,它们永远不会被分配给任何东西。
你可以这样做,使其更具可读性,
int fuelcap;
int mpg;
Car(int fuelcap, int mpg) {
this.fuelcap = fuelcap; //this is refrencing the instance variable in the class
this.mpg = mpg;
}
int range() {
return mpg * fuelcap;
}
构造函数不能识别您想要的方式,因为它可能会导致具有相同名称的变量出错。
答案 3 :(得分:0)
参数化构造函数用于为不同的对象提供不同的值。
如果你想使用
Car(int fuelcap, int mpg){}
您必须使用this
关键字
所以代码变成了
Car(int f, int m) {
this.fuelcap = f;
this.mpg = m; }
如果您不使用this
关键字
所有对象都具有与实例变量相同的值,即fuelcap
和mpg
,现在它的值为0
答案 4 :(得分:0)