繁体   English   中英

如果我可以用另一种方式初始化实例变量,为什么我应该使用构造函数

[英]Why should I use constructor if I can initialize instance variable another way

为什么我应该使用构造函数来初始化实例变量,而这可能是在它们声明的时候?

class Frog {
     public int x = 4;
     Frog() { // Why should I use you }
}

您应该使用我,因为我会帮助您将初始化保存在一个地方。 因为它可以帮助你的其他同事知道在哪里进行初始化,如果他们分散了代码,就不会错过。

如果您需要的唯一初始化是public int x = 4 variety, 则不需要构造函数。

如果你正在进行的初始化比这更复杂,你需要一个构造函数。 也许您需要打开数据库连接。 或者(更简单地) x的值将在构造时由实例化方法提供。 例如: Frog f = new Frog(4);

因为类的构造函数应该完全初始化类,并且用户应该有机会根据需要设置该值。

所以你的班级应该是:

class Frog 
{
    public static final int DEFAULT_VALUE = 4;

    private int x;

    Frog() { this(DEFAULT_VALUE) }
    Frog(int x) { this.x = x; }
}

我们需要一个构造函数来提高我们可以初始化对象的灵活性。 我们可以一次初始化对象的所有变量,并且可以随时使用任何值。 通过初始化,我们将该值绑定到变量。 此外,如果需要永久初始化变量,可以在变量初始化之前使用final关键字实现该变量。

我的五美分。 有时需要引入一些构造函数,它们会以不同的方式初始化变量。

U可以使用构造函数来填充该对象的私有数据。 因为如果x不公开,您将无法访问它。 当两者都是公开的时候,你可以使用构造函数将所有初始化放在一个地方,这使同事更容易阅读,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM