Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数中变量/字段类型的定义,如何完成?_Java_Constructor_Field - Fatal编程技术网

Java 构造函数中变量/字段类型的定义,如何完成?

Java 构造函数中变量/字段类型的定义,如何完成?,java,constructor,field,Java,Constructor,Field,我只是看了一下Sun的Java教程,发现了一些让我完全困惑的东西: 给出以下示例: public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; } 为什么不需要定义齿轮、节奏和速度等变量(字段?)的类型? 我会这样写: public Bicycle(int startCadence, int star

我只是看了一下Sun的Java教程,发现了一些让我完全困惑的东西: 给出以下示例:

public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}

为什么不需要定义齿轮、节奏和速度等变量(字段?)的类型? 我会这样写:

public Bicycle(int startCadence, int startSpeed, int startGear) {
int gear = startGear;
int cadence = startCadence;
int speed = startSpeed;
}


实际的区别是什么?

这些字段很可能在类的前面,在构造函数之前就已经定义好了。我们能看到全班吗

构造函数只是类的一部分,通常不包含实例变量的初始化。您通常会看到在类的顶部定义的变量。

您的代码将声明局部变量-当构造函数完成时,这些变量将有效地消失。让我们通过更多的上下文来了解:

// the Bicycle class has three fields
public int cadence;
public int gear;
public int speed;

// the Bicycle class has one constructor
public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}

现在您可以看到声明了——它们是在构造函数之外声明的,因为它们是实例字段而不是局部变量。它们构成了
Bicycle
类的每个实例的数据。

它们被定义为类变量,并且得到了一个隐式的this附件。为了更清楚,它可以读

公共自行车(int STARTCANCE、int startSpeed、int startGear){ 这个齿轮=起动齿轮; 这个.cadence=startCadence; 该速度=起动速度;
}

最后一个备选方案实例化方法变量。这些变量在调用构造函数后消失,而在第一个备选方案中使用的类变量是由给定构造函数启动的对象的一部分。整个示例可以在这里找到:本教程是构造函数教程。我打赌他们假定实例变量已经存在。祝你好运