[Java] λ³μμ μ΄κΈ°ν & ν΄λμ€μ μΈμ€ν΄μ€μ μ΄κΈ°ν μμ
λ³μμ μ΄κΈ°ν
λ³μμ μ΄κΈ°ν : λ³μλ₯Ό μ μΈνκ³ μ²μμΌλ‘ κ°μ μ μ₯νλ κ²
λ©€λ² λ³μ(ν΄λμ€ λ³μμ μΈμ€ν΄μ€ λ³μ)μ λ°°μ΄μ μ΄κΈ°νλ μ νμ μ΄μ§λ§, μ§μλ³μμ μ΄κΈ°νλ νμμ μ΄λ€.
class InitTest{
int x; // μΈμ€ν΄μ€ λ³μ
int y = x; // μΈμ€ν΄μ€ λ³μ
void method1() {
int i; // μ§μλ³μ
int j = i; // μλ¬. μ§μλ³μλ₯Ό μ΄κΈ°ννμ§ μκ³ μ¬μ©
}
}
λ©€λ² λ³μμ μ΄κΈ°ν λ°©λ²
1οΈβ£ λͺ μμ μ΄κΈ°ν(explicit initialization)
2οΈβ£ μμ±μ(constructor)
3οΈβ£ μ΄κΈ°ν λΈλ(initialization block)
- μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ : μΈμ€ν΄μ€λ³μ μ΄κΈ°ν νλλ° μ¬μ©
- ν΄λμ€ μ΄κΈ°ν λΈλ : ν΄λμ€λ³μλ₯Ό μ΄κΈ°ν νλλ° μ¬μ©
1οΈβ£ λͺ μμ μ΄κΈ°ν(explicit initialization)
λͺ μμ (ζη€Ίη)
1.λλ ·νκ² λλ¬λ 보μ΄λ κ²
2.μ¨κΉμ΄λ κ°μΆ€μ΄ μμ΄ λΆλͺ νκ² λνλ΄λ κ²
3.μ΄λ€ μΌμ λΆλͺ νκ² λλ¬λ΄λ κ²
λ³μλ₯Ό μ μΈκ³Ό λμμ μ΄κΈ°ννλ κ²μ λͺ μμ μ΄κΈ°νλΌκ³ νλ€.
κ°μ₯ κΈ°λ³Έμ μ΄λ©΄μλ κ°λ¨ν μ΄κΈ°ν λ°©λ²μ΄λ―λ‘ μ¬λ¬ μ΄κΈ°ν λ°©λ² μ€μμ κ°μ₯ μ°μ μ μΌλ‘ κ³ λ €λμ΄μΌ νλ€.
class Car {
int door = 4; // κΈ°λ³Έν(primitive type) λ³μμ μ΄κΈ°ν
Engine e = new Engine(); // μ°Έμ‘°ν(reference type) λ³μμ μ΄κΈ°ν
}
3οΈβ£ μ΄κΈ°ν λΈλ(initialization block)
ν΄λμ€ μ΄κΈ°ν λΈλ : ν΄λμ€λ³μμ 볡μ‘ν μ΄κΈ°νμ μ¬μ©λλ€.
μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ : μΈμ€ν΄μ€λ³μμ 볡μ‘ν μ΄κΈ°νμ μ¬μ©λλ€.
class InitBlock {
static { /* ν΄λμ€ μ΄κΈ°νλΈλ μ
λλ€. */ }
{ /* μΈμ€ν΄μ€ μ΄κΈ°νλΈλ μ
λλ€. */ }
}
ν΄λμ€ μ΄κΈ°ν λΈλ
μ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ²μ λ‘λ©λ λ νλ²λ§ μνλλ©°, μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ
μ μμ±μμ κ°μ΄ μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ§λ€ μνλλ€.
κ·Έλ¦¬κ³ μμ±μλ³΄λ€ μΈμ€ν΄μ€ μ΄κΈ°ν λΈλμ΄ λ¨Όμ μνλλ€.
Car() {
count++;
serialNo = count;
color = "White";
gearType = "auto";
}
Car(String color, String gearType) {
count++;
serialNo = count;
this.color = color;
this.gearType = gearType;
}
{
count++;
serialNo = count;
}
Car() {
color = "White";
gearType = "auto";
}
Car(String color, String gearType) {
this.color = color;
this.gearType = gearType;
}
μμͺ½μμ λ°μͺ½μΌλ‘ κ°κ²°νκ² μμ±ν μ μλ€.
μ½λμ μ€λ³΅μ μ κ±°νλ κ²μ μ½λμ μ λ’°μ±μ λμ¬ μ£Όκ³ , μ€λ₯μ λ°μκ°λ₯μ±μ μ€μ¬μ€λ€.
ν΄λμ€λ³μμ μ΄κΈ°νμμ : ν΄λμ€κ° μ²μ λ‘λ©λ λ λ¨ νλ² μ΄κΈ°ν λλ€.
μΈμ€ν΄μ€λ³μμ μ΄κΈ°νμμ : μΈμ€ν΄μ€κ° μμ±λ λλ§λ€ κ° μΈμ€ν΄μ€λ³λ‘ μ΄κΈ°νκ° μ΄λ£¨μ΄μ§λ€.
ν΄λμ€λ³μμ μ΄κΈ°νμμ : κΈ°λ³Έκ° → λͺ
μμ μ΄κΈ°ν → ν΄λμ€ μ΄κΈ°ν λΈλ
μΈμ€ν΄μ€λ³μμ μ΄κΈ°νμμ : κΈ°λ³Έκ° → λͺ
μμ μ΄κΈ°ν → μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ → μμ±μ