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

问题描述:

我已搜查这个很多,得到堆栈溢出这个答案 given answer here为什么构造函数使用,为什么不总是使用变量的简单初始化?

  • 指出,我们可以同时使用构造函数和简单的初始化

但我想这

的答案
  • 但为什么使用构造函数初始化,如果它通过编译自动完成r!
+2

我不明白读完这个问题和答案后你还不清楚什么。 –

+1

最简单的答案为他们分配默认值,例如int类型变量总是分配给0,如果你想要默认值应该是1,当你使用“”(空字符串)初始化类似字符串的构造函数中的实例变量时,你有好处,必须关心空指针。 – Abhishek

构造函数的简单定义:

初始化类的对象的特殊方法。始终且仅与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来更改它。更改/更新它。

要创建新的对象,我们必须运行constructor.If我们创建自动默认的构造函数编译器添加默认constructor.But当我们想运行paramaetrized构造我们在类中定义..