# 1.13 Object Creation and Storage (Instantiation)

**Suggested Skills:** 2.B

**LO 1.13.A** — Identify, using its signature, the correct constructor being called.

* **1.13.A.1** — A class contains **constructors** that are called to create objects. They have the same name as the class.
* **1.13.A.2** — A **constructor signature** consists of the constructor's name (same as the class name) and the ordered list of parameter types. The parameter list, in the header of a constructor, lists the types of the values that are passed and their variable names.
* **1.13.A.3** — Constructors are said to be **overloaded** when there are multiple constructors with different signatures.

**LO 1.13.B** — Develop code to declare variables of the correct types to hold object references.

* **1.13.B.1** — A variable of a reference type holds an object reference or, if there is no object, `null`.

**LO 1.13.C** — Develop code to create an object by calling a constructor.

* **1.13.C.1** — An object is typically created using the keyword `new` followed by a call to one of the class's constructors.
* **1.13.C.2** — Parameters allow constructors to accept values to establish the initial values of the attributes of the object.
* **1.13.C.3** — A **constructor argument** is a value that is passed into a constructor when the constructor is called. The arguments passed to a constructor must be compatible in order and number with the types identified in the parameter list in the constructor signature. When calling constructors, arguments are passed using call by value.
* **1.13.C.4** — A constructor call interrupts the sequential execution of statements, causing the program to first execute the statements in the constructor before continuing. Once the last statement in the constructor has been executed, the flow of control is returned to the point immediately following where the constructor was called.
