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

时间:2017-05-31 07:11:09

标签: java

我已经搜索了这一批并在堆栈溢出时得到了这个答案 given answer here

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

但我想要回答这个

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

2 个答案:

答案 0 :(得分:5)

构造函数的简单定义:

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

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

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

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

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

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

    作为一个例子:

    • 考虑Rectangle包中的java.awt类,该类提供了几个不同的构造函数,都是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来更改它更改/更新它。

答案 1 :(得分:1)

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