为什么构造函数使用,为什么不总是使用变量的简单初始化?
问题描述:
我已搜查这个很多,得到堆栈溢出这个答案 given answer here为什么构造函数使用,为什么不总是使用变量的简单初始化?
- 指出,我们可以同时使用构造函数和简单的初始化
但我想这
的答案- 但为什么使用构造函数初始化,如果它通过编译自动完成r!
答
构造函数的简单定义:
初始化类的对象的特殊方法。始终且仅与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来更改它。更改/更新它。
答
要创建新的对象,我们必须运行constructor.If我们创建自动默认的构造函数编译器添加默认constructor.But当我们想运行paramaetrized构造我们在类中定义..
我不明白读完这个问题和答案后你还不清楚什么。 –
最简单的答案为他们分配默认值,例如int类型变量总是分配给0,如果你想要默认值应该是1,当你使用“”(空字符串)初始化类似字符串的构造函数中的实例变量时,你有好处,必须关心空指针。 – Abhishek