构造函数就像一个类同名的方法,用于初始化对象;也可以通过方法来完成。在内部解释调用对象时发生了什么?
7 回答
构造函数用于在创建期间进行初始化。其他方法将进行初始化后构造。如果在构造函数中发生异常,则不会创建对象,但在另一种情况下则不会创建。
初始化对象时会自动调用构造函数 - 当您使用 new 创建对象时。因此,您在 1 步中分配和初始化对象。这不能用普通函数完成——你需要在没有构造函数的情况下分两步完成
构造函数就像一个方法(没有返回类型)具有相同的类名,用于在创建对象之前初始化变量。
如果您不编写构造函数,编译器会在内部创建一个默认构造函数。
您可以在创建构造函数对象后立即执行构造函数的一些基本代码,但其基本目的是在创建对象期间进行初始化。
方法只能通过实例调用,除非它是static
. static
构造函数比在 OO 世界中调用方法要好得多。
很多时候你的类会有一些内部状态。并且您希望确保在使用该类的实例之前初始化内部状态。
您可以在类中拥有一个方法来完成相同的工作这一事实是正确的,但是在大多数情况下这将是一个糟糕的设计,而面向对象编程只不过是一种设计范式。
在其他情况下,您可能希望确保在创建实例之前满足某些先决条件,这也可以由构造函数捕获。
default valid state
在大多数情况下,对象在创建时必须有一些。例如,包装 Integer 类,任何 Integer 对象在创建时都必须具有有效的 int 值。构造函数是一种方式injecting that valid state inside a newly created object
。它就像一个JVM兑现的合同。每当创建一个新对象时:
然后分配内存
调用该类的正确构造函数。