这行得通吗?
class Cars{
Cars(int speed, int weight)
}
我只是想弄清楚构造函数。如果它像方法一样被调用,那么我认为它的工作方式类似于方法。您可以在调用该方法时使用的方法中创建局部变量,所以我不明白为什么必须在构造函数使用它们之前声明实例变量。
这行得通吗?
class Cars{
Cars(int speed, int weight)
}
我只是想弄清楚构造函数。如果它像方法一样被调用,那么我认为它的工作方式类似于方法。您可以在调用该方法时使用的方法中创建局部变量,所以我不明白为什么必须在构造函数使用它们之前声明实例变量。
在您的示例中,速度和重量不是实例变量,因为它们的范围仅限于构造函数。你在外面声明它们是为了使它们在整个类中可见(即在这个类的整个对象中)。构造函数的目的是初始化它们。
例如以这种方式:
public class Car
{
// visible inside whole class
private int speed;
private int weight;
// constructor parameters are only visible inside the constructor itself
public Car(int sp, int w)
{
speed = sp;
weight = w;
}
public int getSpeed()
{
// only 'speed' and 'weight' are usable here because 'sp' and 'w' are limited to the constructor block
return speed;
}
}
这里sp
和w
是用于设置实例变量初始值的参数。它们仅在构造函数执行期间存在,不能在任何其他方法中访问。
构造函数用作实例化该对象的新实例的一种方式。他们不必有任何实例变量输入。声明了实例变量,因此特定类中的多个方法可以使用它们。
public class Foo{
String x;
int y;
Foo(){
//instance variables are not set therefore will have default values
}
void init(String x, int y){
//random method that initializes instance variables
this.x = x;
this.y = y;
}
void useInstance(){
System.out.println(x+y);
}
}
在上面的示例中,构造函数没有设置实例变量,init() 方法设置了。这样 useInstance() 就可以使用这些变量。
You are probably not understanding the correct use of Constructors.
构造函数用于创建作为类实例的对象。通常,它在调用方法或访问字段之前执行初始化类所需的操作。