[JAVA] μμ±μ(consructor)
π μμ±μ(constructor)
1. μμ±μλ?
μμ±μλ μΈμ€ν΄μ€κ° μμ±λ λ νΈμΆλλ '*μΈμ€ν΄μ€ μ΄κΈ°ν λ©μλ'μ΄λ€.
μ€λͺ λλ‘ μΈμ€ν΄μ€ λ³μλ₯Ό μ΄κΈ°ν ν λ μ£Όλ‘ μ¬μ©λλ©°, μΈμ€ν΄μ€ μμ± μ μ€νλμ΄μΌ ν μμ μ μν΄μλ μ¬μ©λλ€.
*μΈμ€ν΄μ€ μ΄κΈ°ν : μΈμ€ν΄μ€ λ³μλ€μ μ΄κΈ°ν νλ κ²
μμ±μ 쑰건과 μ μ
μμ±μλ ν΄λμ€ λ΄μ μ μΈλλ©°, λ©μλμ ꡬ쑰μ μ μ¬νλ€.
ν΄λμ€μ΄λ¦(νμ
λ³μλͺ
, νμ
λ³μλͺ
, ...){
// μΈμ€ν΄μ€ μμ±μ μνλ μ½λ,
// μ£Όλ‘ μΈμ€ν΄μ€ λ³μμ μ΄κΈ°ν μ½λλ₯Ό μ λλ€.
}
- μμ±μμ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό κ°μμΌ νλ€.
- μμ±μλ λ¦¬ν΄ κ°μ΄ μλ€.
- μμ±μ μμ 리ν΄κ°μ΄ μμμ λ»νλ ν€μλ voidλ₯Ό μ¬μ©νμ§ μμ, μ무κ²λ μ μ§ μλλ€.
- μμ±μλ newλ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±ν λ, κ°μ²΄λΉ ν λ² νΈμΆ
- μμ±μλ μ¬λ¬κ° μμ± κ°λ₯νλ€(μ€λ²λ‘λ©)
λν, μμ±μμ λν΄ μ£Όμν΄μΌν μ μ΄μλ€.
μ°μ°μ newκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄μ§ μμ±μκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ μλλ€.
μμ±μλ λ¨μν μΈμ€ν΄μ€λ³μλ€μ μ΄κΈ°νμ μ¬μ©λλ νΉλ³ν λ©μλμΌ λΏμ΄λ€.
* μΈμ€ν΄μ€ : ν΄λμ€μ μν΄μ λ§λ€μ΄μ§ κ°μ²΄
κ·Έλ λ€λ©΄ μΈμ€ν΄μ€λ₯Ό μμ±νλ μ½λμ μν κ³Όμ μμλ₯Ό 보μ.
Card c = new Card();
- μ°μ°μ newμ μν΄μ λ©λͺ¨λ¦¬(heap)μ Cardν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λλ€.
- μμ±μ Card()κ° νΈμΆλμ΄ μνλλ€.
- μ°μ°μ newμ κ²°κ³Όλ‘, μμ±λ CardμΈμ€ν΄μ€μ μ£Όμκ° λ°νλμ΄ μ°Έμ‘°λ³μ cμ μ μ₯λλ€.
μ°λ¦¬κ° μ§κΈκΉμ§ μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° μν΄ μ¬μ©ν΄μλ 'ν΄λμ€μ΄λ¦()'μ΄ μμ±μμλ κ²μ΄λ€.
κ·ΈλΌ μΈμ€ν΄μ€λ₯Ό μμ±ν λλ λ°λμ μμ±μλ₯Ό μ ννμ¬ μ§μ ν΄μ€μΌ νλ€.
2. κΈ°λ³Έ μμ±μ
λͺ¨λ ν΄λμ€μλ λ°λμ νλ μ΄μμ μμ±μκ° μ μ λμ΄ μμ΄μΌ νλ€.
νμ§λ§ μ°λ¦¬λ μμ±μλ₯Ό μ μ ν μ μ΄ μλ€, κ·Έλ μ§λ§ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμλ€.
κ·Έ μ΄μ κ° μ»΄νμΌλ¬κ° μ 곡νλ 'κΈ°λ³Έ μμ±μ(default constructor)' λλΆμ΄λ€.
μ»΄νμΌ ν λ, ν΄λμ€μ μμ±μκ° νλλ μ μλμ΄ μμ§ μμΌλ©΄ μ»΄νμΌλ¬λ μλμ μΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό μΆκ°νλ€.
λ¨, μμ±μκ° νλλΌλ μμ λλ κΈ°λ³Έ μμ±μλ₯Ό μ§μ μΆκ°ν΄μΌνλ€.
κΈ°λ³Έ μμ±μλ μλμ κ°μ΄ μΆκ° ν μ μλ€.
ν΄λμ€μ΄λ¦() { }
Card() { }
κ·Έλ λ€λ©΄, μ’ μ μ μμ 'new Card()'λΆλΆμ 'Card()'λ κΈ°λ³Έ μμ±μκ° λλ€.
κΈ°λ³Έ μμ±μλ λ§€κ°λ³μλ, λ΄μ©λ μλ€.
3. λ§€κ°λ³μκ° μλ μμ±μ
λ§€κ°λ³μκ° μλ μμ±μλ, λ©μλμ²λΌ λ§€κ°λ³μλ₯Ό μ μΈνμ¬ νΈμΆ μ κ°μ λ겨λ°μ μΈμ€ν΄μ€ μ΄κΈ°ν μμ μ μ¬μ©ν μ μλ€.
μμλ₯Ό λ€μ΄λ³΄μ, μλμ μ½λλ μλμ°¨ ν΄λμ€λ‘ μ μν κ²μ΄λ€, μΈκ°μ μΈμ€ν΄μ€ λ³μμ λ κ°μ μμ±μλ§ κ°μ§κ³ μλ€.
class Car {
String color;
String gearType;
int door;
Car() {} // κΈ°λ³Έ μμ±μ
Car(String c, String g, int d) { // λ§€κ°λ³μκ° μλ μμ±μ
color = c;
gearType = g;
door = d;
}
}
λ§μ½ Car κ°μ²΄λ₯Ό μμ±ν λ, κΈ°λ³Έ μμ±μλ₯Ό μ΄μ©νλ€λ©΄, μΈμ€ν΄μ€ λ³μλ€μ λ°λ‘ μ΄κΈ°ν ν΄μ£Όμ΄μΌ νλ€.
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;
μ΄λ κ² νλνλ μ΄κΈ°ν νλ©΄, μ½λκ° κΈΈμ΄μ§κ³ μ§κ΄μ μ΄μ§ μλ€.
Car c = new Car("white","auto",4);
λ§€κ°λ³μκ° μλ μμ±μλ₯Ό μ¬μ©ν΄ μμ±κ³Ό λμμ μ΄κΈ°νλ₯Ό ν μ μκ²λλ€.
μ΄λ κ² λ΄€μ λλ ν¨μ λ μ§κ΄μ μ΄κ³ μ½λκ° κ°κ²°ν΄μ§λ€.
κΈ°λ³Έ μμ±μλ₯Ό μ¬μ©νμ λμ λ§€κ°λ³μκ° μλ μμ±μλ₯Ό μ¬μ©νμ λ, λ΄μ©μ λͺ¨λ κ°λ€.
νμ§λ§ μ½λλ₯Ό μμ± ν λλ νμ μ§κ΄μ μ΄κ³ κ°κ²°νκ² μμ±νλ κ²μ΄ μ’λ€.
Q & A
Q. λͺ¨λ ν΄λμ€μλ λ°λμ νλ μ΄μμ μμ±μκ° μ μλμ΄ μμ΄μΌ νλ€.
λ§€κ°λ³μκ° μλ μμ±μκ° ν΄λμ€μ μ μΈλ κ²½μ°, κΈ°λ³Έ μμ±μλ μμ΄λ λλ κ² μλκ°μ?
A. κΈ°λ³Έ μμ±μλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ μμ΄λ λλ€!
(μμ±μλ₯Ό μ무κ²λ λ§λ€μ§ μμΌλ©΄ μλμΌλ‘ κΈ°λ³Έ μμ±μκ° λ§λ€μ΄μ§κ² λλλ°, νλλΌλ λ§€κ°λ³μκ° λ€μ΄κ° μμ±μκ° μ μΈλ κ²½μ° κΈ°λ³Έ μμ±μκ° defaultλ‘ μ€μ λμ§ μκΈ°λλ¬Έμ λ³΄ν΅ λ§€κ°λ³μκ° μλ μμ±μλ₯Ό λ§λ λ€μμλ κΈ°λ³Έ μμ±μλ₯Ό λͺ
μν΄μ€λλ€.)