为什么构造函数使用,为什么不总是使用简单的变量初始化?
我已经搜索了这个批次,并在堆栈溢出时得到了这个答案
- 这表明我们可以使用构造函数和简单初始化
但我想回答这个问题
- 但为什么使用构造函数初始化,如果它由编译器自动完成!
构造函数的简单定义:
初始化类对象的特殊方法。 始终只与new
关键字一起使用来创建类的实例。
- 与该类的名称具有相同的名称。
- 可以采用一个或多个参数。
- 没有回报价值,甚至无效。
- 默认构造函数不带参数。
- 存在多个构造函数(方法重载)。
但为什么使用构造函数初始化,如果它由编译器自动完成!
如果尚未实现构造函数,则构造函数将由编译器(默认构造函数)初始化。
那么为什么我们需要实现一个构造函数呢?
- 它的工作是告诉所有局部变量它们的初始值,并且可能在类中开始另一个方法来为类的目的做更多的事情。
- 取决于您拥有的数据,即可用数据。
- 创建对象的不同方式。
- 必须使用构造函数初始化所有类变量。
举个例子:
-
考虑
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构造函数时,我们必须在类中定义..