Programming languages/Java

μžλ°” μƒμ„±μž(Constructor)

yoooCo 2025. 4. 11. 20:49

πŸ“š μžλ°” μƒμ„±μž(Constructor) μ™„.μ „.μ •.볡!

μƒμ„±μžλΌλŠ” 말, 처음 λ“€μ—ˆμ„ 땐 λ‚―μ„€κ³  μ–΄λ ΅κ²Œ λŠκ»΄μ§€μ…¨μ£ ?
ν•˜μ§€λ§Œ μ•Œκ³  보면, μš°λ¦¬κ°€ 클래슀λ₯Ό μ‚¬μš©ν•  λ•Œ
처음 μΈμ‚¬ν•˜λŠ” λ¬Έ 같은 μ‘΄μž¬λžλ‹ˆλ‹€.
이번 κΈ€μ—μ„œ μƒμ„±μžμ˜ λͺ¨λ“  κ±Έ 쉽고 예쁘게 μ •λ¦¬ν•΄λ“œλ¦΄κ²Œμš” 😊


✨ μƒμ„±μžλž€?

  • μžλ°”μ—μ„œ 객체λ₯Ό 생성할 λ•Œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ μž…λ‹ˆλ‹€.
  • 객체가 νƒœμ–΄λ‚  λ•Œ μ–΄λ–€ 값을 κ°€μ§ˆμ§€ μ •ν•΄μ£ΌλŠ” μ΄ˆκΈ°ν™” 도ꡬ μ˜ˆμš”!
  • 일반 λ©”μ„œλ“œμ²˜λŸΌ μƒκ²Όμ§€λ§Œ, 리턴 νƒ€μž…μ΄ μ—†κ³  이름은 클래슀λͺ…κ³Ό 동일 ν•΄μ•Ό ν•΄μš”.

πŸ’¬ μ •λ¦¬ν•˜μžλ©΄,
"객체가 λ§Œλ“€μ–΄μ§ˆ λ•Œ μ‹€ν–‰λ˜λŠ” νŠΉλ³„ν•œ λ©”μ„œλ“œ!" 라고 κΈ°μ–΅ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.


πŸ›  μƒμ„±μžμ˜ 2가지 ν•„μˆ˜ κ·œμΉ™

1️⃣ 클래슀 이름과 μ™„μ „νžˆ κ°™μ•„μ•Ό ν•œλ‹€
2️⃣ 리턴 νƒ€μž…μ΄ μ—†μ–΄μ•Ό ν•œλ‹€ (void도 κΈˆμ§€!)

πŸ“’ μ»΄νŒŒμΌλŸ¬λŠ” 리턴 νƒ€μž…μ΄ 보이면 β€œμ΄κ±΄ μƒμ„±μž μ•„λ‹˜β€μ΄λΌλ©° 였λ₯˜λ₯Ό λƒ…λ‹ˆλ‹€!

☝️ κΈ°λ³Έ μƒμ„±μž (λ§€κ°œλ³€μˆ˜ μ—†λŠ” μƒμ„±μž)

public class Book {
    String title;
    int pages;

    public Book() {
        title = "No Title";
        pages = 0;
    }
}

πŸ“Œ 이 μƒμ„±μžλŠ” μ•„λ¬΄λŸ° 값도 받지 μ•Šκ³ 
κΈ°λ³Έκ°’μœΌλ‘œ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.

public static void main (String[] args){
Book myBook = new Book();
System.out.println(myBook.title);  // 좜λ ₯: No Title
}

✌️ λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μž

public class Book {
    String title;
    int pages;

    public Book(String title, int pages) {
        this.title = title;
        this.pages = pages;
    }
}

πŸ“Œ 이 방식은 객체 생성 μ‹œ
직접 μ›ν•˜λŠ” κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  수 μžˆμ–΄μš”!

public static void main (String[] arg){
Book novel = new Book("신데렐라", 300);
}

πŸ” μƒμ„±μžλΌλ¦¬ μ—°κ²°ν•˜κ³  μ‹Άλ‹€λ©΄? this()

public class Book {
    String title;
    int pages;

    public Book() {
        this("No Title", 0); // λ‹€λ₯Έ μƒμ„±μž 호좜
    }

    public Book(String title, int pages) {
        this.title = title;
        this.pages = pages;
    }
}

βœ…this()λ₯Ό μ‚¬μš©ν•˜λ©΄
쀑볡 μ½”λ“œλ₯Ό 쀄이고 ν•œ κ΅°λ°μ—μ„œ μ΄ˆκΈ°ν™” λ‘œμ§μ„ 관리할 수 μžˆμ–΄μš”.

❗️❗️ this()λŠ” λ°˜λ“œμ‹œ μƒμ„±μžμ˜ 첫 μ€„μ—λ§Œ 써야 ν•΄μš”!


πŸ“Ž 볡사 μƒμ„±μž - μΈμŠ€ν„΄μŠ€ λ³΅μ œν•˜κΈ°

public class Book {
    String title;
    int pages;

    public Book(String title, int pages) {
        this.title = title;
        this.pages = pages;
    }

    // 볡사 μƒμ„±μž
    public Book(Book original) {
        this(original.title, original.pages);
    }
}
public static void main (String[] arg){
Book b1 = new Book("μ—°κΈˆμˆ μ‚¬", 300);
Book b2 = new Book(b1); // 볡사
}

πŸ’‘ 두 κ°μ²΄λŠ” μ„œλ‘œ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ§€λ§Œ, 같은 값을 κ°€μ§‘λ‹ˆλ‹€.


🧠 μƒμ„±μž μ’…λ₯˜ μš”μ•½

μ’…λ₯˜ μ„€λͺ… μ˜ˆμ‹œ
κΈ°λ³Έ μƒμ„±μž λ§€κ°œλ³€μˆ˜ 없이 κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™” new Book()
λ§€κ°œλ³€μˆ˜ μƒμ„±μž 전달받은 κ°’μœΌλ‘œ μ΄ˆκΈ°ν™” new Book("Title", 300)
this() μƒμ„±μž 호좜 μƒμ„±μžλΌλ¦¬ μ—°κ²° this("No Title", 0)
볡사 μƒμ„±μž κΈ°μ‘΄ μΈμŠ€ν„΄μŠ€λ₯Ό λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘œ 생성 new Book(κΈ°μ‘΄ Book 객체)

β˜• 마무리 ν•œ 쀄

μƒμ„±μžλŠ” λ§ν•˜μžλ©΄ 클래슀의 μ²«μΈμƒμ΄μ—μš”.
μ–΄λ–€ λͺ¨μŠ΅μœΌλ‘œ νƒœμ–΄λ‚ μ§€ 미리 μ •ν•΄μ£ΌλŠ” μ€‘μš”ν•œ 역할이죠.
이왕이면 λ‹¨μ •ν•˜κ³  λ˜‘λ˜‘ν•˜κ²Œ λ§Œλ“€μ–΄μ£Όμžκ΅¬μš” 😊