1

这行得通吗?

class Cars{
    Cars(int speed, int weight)
}

我只是想弄清楚构造函数。如果它像方法一样被调用,那么我认为它的工作方式类似于方法。您可以在调用该方法时使用的方法中创建局部变量,所以我不明白为什么必须在构造函数使用它们之前声明实例变量。

4

3 回答 3

3

在您的示例中,速度和重量不是实例变量,因为它们的范围仅限于构造函数。你在外面声明它们是为了使它们在整个类中可见(即在这个类的整个对象中)。构造函数的目的是初始化它们。

例如以这种方式:

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;
    }
}

这里spw是用于设置实例变量初始值的参数。它们仅在构造函数执行期间存在,不能在任何其他方法中访问。

于 2013-09-06T03:01:54.273 回答
1

构造函数用作实例化该对象的新实例的一种方式。他们不必有任何实例变量输入。声明了实例变量,因此特定类中的多个方法可以使用它们。

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() 就可以使用这些变量。

于 2013-09-06T03:02:40.730 回答
0
You are probably not understanding the correct use of Constructors.

构造函数

构造函数用于创建作为类实例的对象。通常,它在调用方法或访问字段之前执行初始化类所需的操作。

于 2013-09-06T02:56:17.793 回答