【问题标题】:Why should one specify attribute values inside a constructor when it is simpler to specify them in the declaration?当在声明中指定属性值更简单时,为什么还要在构造函数中指定属性值?
【发布时间】:2021-09-03 04:50:21
【问题描述】:

我刚刚开始学习构造函数,并且知道它们用于初始化对象。但我注意到可以在声明中为对象赋予初始值(如示例 2 所示),而无需在构造函数中单独指定它们。

下面的两个例子给出了相同的结果,那么首先声明属性然后在构造函数中而不是立即在声明中指定值有什么好处?

示例 1:

**public class Main {
    int x;  
    
    public Main() {
        x = 5;  
    }**

    public static void main(String[] args) {
        Main myObj = new Main();
        System.out.println(myObj.x);
    }
}

示例 2:

**public class Main {
    int x = 5;**

    public static void main(String[] args) {
        Main myObj = new Main();
        System.out.println(myObj.x);
    }
}

【问题讨论】:

  • 假设你有两个变量,第二个的值取决于第一个的值。您不能在方法或构造函数之外拥有这种逻辑。
  • 谷歌“java为什么构造函数站点:stackoverflow.com”
  • 在您的特定情况下,它没有任何区别。

标签: java constructor


【解决方案1】:

在您的示例中,您总是希望将值设置为预定义的值,因此不需要构造函数。它可以在定义属性时初始化。然而,在大多数情况下,它并不是那么简单——类属性的值通常在创建实例时传入。在这种情况下,构造函数是初始化类属性的好方法。

public class Main {
    int x;  
    
    public Main(int x) {
        this.x = x;  
    }

    public static void main(String[] args) {
        Main myObj = new Main(6);
        System.out.println(myObj.x);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多