你能在构造函数中声明一个实例变量作为参数吗?

时间:2013-09-06 02:53:58

标签: java variables parameters instance

这会有用吗?

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

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

3 个答案:

答案 0 :(得分: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是用于设置实例变量初始值的参数。它们仅在执行构造函数期间存在,并且无法在任何其他方法中访问。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

You are probably not understanding the correct use of Constructors.

<强> Constructor

  

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