为什么构造函数使用,为什么不总是使用简单的变量初始化?

我已经搜索了这个批次,并在堆栈溢出时得到了这个答案

  • 这表明我们可以使用构造函数和简单初始化

但我想回答这个问题

  • 但为什么使用构造函数初始化,如果它由编译器自动完成!

构造函数的简单定义:

初始化类对象的特殊方法。 始终只与new关键字一起使用来创建类的实例。

  1. 与该类的名称具有相同的名称。
  2. 可以采用一个或多个参数。
  3. 没有回报价值,甚至无效。
  4. 默认构造函数不带参数。
  5. 存在多个构造函数(方法重载)。

但为什么使用构造函数初始化,如果它由编译器自动完成!

如果尚未实现构造函数,则构造函数将由编译器(默认构造函数)初始化。

那么为什么我们需要实现一个构造函数呢?

  • 它的工作是告诉所有局部变量它们的初始值,并且可能在类中开始另一个方法来为类的目的做更多的事情。
  • 取决于您拥有的数据,即可用数据。
  • 创建对象的不同方式。
  • 必须使用构造函数初始化所有类变量。

举个例子:

  • 考虑java.awt包中的Rectangle类,该类提供了几个不同的构造函数,所有构造函数都命名为Rectangle() ,但每个都有不同数量的参数,或者不同类型的参数,新的Rectangle对象将从这些参数获得其初始状态。 以下是java.awt.Rectangle类的构造函数签名:

  • public Rectangle()

  • public Rectangle(int width, int height)
  • public Rectangle(int x, int y, int width, int height)
  • public Rectangle(Dimension size)
  • public Rectangle(Point location)
  • public Rectangle(Point location, Dimension size)
  • public Rectangle(Rectangle r)

如果您的成员变量是private (安全原因)怎么办? 如果你不想让其他类来处理成员变量,你必须使用getter和setter,但首先,你可以使用构造函数初始化它,然后你可以在以后需要时使用getter和setter来更改它更改/更新它。

要创建一个新对象,我们必须运行构造函数。如果我们创建默认构造函数编译器,则自动添加默认构造函数。但是当我们想要运行paramaetrized构造函数时,我们必须在类中定义..