λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

12 Constructor

by Dowon Kang 2024. 1. 19.

μƒμ„±μž(Constructor)λŠ” κ°μ²΄λ₯Ό μƒμ„±ν•  λ•Œ ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ λ©”μ„œλ“œλ‘œ, κ°μ²΄μ˜ μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•©λ‹ˆλ‹€. μƒμ„±μžλŠ” ν΄λž˜μŠ€ μ΄λ¦„κ³Ό λ™μΌν•˜λ©°, κ°μ²΄λ₯Ό μƒμ„±ν•  λ•Œ new ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ ν˜ΈμΆœλ©λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” μƒμ„±μžμ˜ μ΄λ¦„ μ•žμ— λ°˜ν™˜ νƒ€μž…을 λͺ…μ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μƒμ„±μžμ˜ μ£Όμš” λͺ©μ μ€ κ°μ²΄κ°€ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜κ³  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ“€μ΄ μ΄ˆκΈ°ν™”될 λ•Œ ν•„μš”ν•œ μž‘업을 μˆ˜ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ°μ²΄λ₯Ό μƒμ„±ν•  λ•Œλ§ˆλ‹€ μ‹€ν–‰λ˜λ©°, μƒμ„±μžλ₯Ό ν†΅ν•΄ κ°μ²΄μ˜ μ΄ˆκΈ° μƒνƒœλ₯Ό μ„€μ •ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

더보기

public class Car {
    // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜
    String brand;
    int year;

    // λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μž
    public Car(String brand, int year) {
        this.brand = brand;
        this.year = year;
    }

    // λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” μƒμ„±μž (κΈ°λ³Έ μƒμ„±μž)
    public Car() {
        // κΈ°λ³Έ μƒμ„±μž λ‚΄μš©
    }
}

 

μœ„μ˜ μ½”λ“œμ—μ„œ Car ν΄λž˜μŠ€λŠ” λ‘ κ°œμ˜ μƒμ„±μžλ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. μ²« λ²ˆμ§Έ μƒμ„±μžλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ κ°μ²΄λ₯Ό μ΄ˆκΈ°ν™”ν•˜κ³ , λ‘ λ²ˆμ§Έ μƒμ„±μžλŠ” λ§€κ°œλ³€μˆ˜ μ—†μ΄ κ°μ²΄λ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. μƒμ„±μžλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•˜μ§€ μ•Šμ„ κ²½μš°, μžλ°”λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.

 

 


 

 

μƒμ„±μž μ˜€λ²„λ‘œλ”©(Constructor Overloading)

ν•˜λ‚˜μ˜ 클래슀 λ‚΄μ—μ„œ λ™μΌν•œ μ΄λ¦„μ˜ μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. μƒμ„±μž μ˜€λ²„λ‘œλ”©μ„ 톡해 같은 μ΄λ¦„μ˜ μƒμ„±μžλ₯Ό λ‹€μ–‘ν•œ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ ν˜ΈμΆœν•  수 있으며, 이λ₯Ό 톡해 객체λ₯Ό λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ‹€μ–‘ν•œ μƒμ„±μžλ“€μ„ 톡해 μ‚¬μš©μžλŠ” λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ Book 객체λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 


 

 

 

this와 this()

μƒμ„±μžμ—μ„œ μ‚¬μš©λ˜λŠ” ν‚€μ›Œλ“œλ‘œ, 객체의 μΈμŠ€ν„΄μŠ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 두 ν‚€μ›Œλ“œ κ°„μ—λŠ” λͺ‡ 가지 μ€‘μš”ν•œ 차이점이 μžˆμŠ΅λ‹ˆλ‹€.

 

1) this: ν˜„μž¬ 객체의 μ°Έμ‘°λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 주둜 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜ μ΄λ¦„이 κ°™μ„ λ•Œ, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€λ¦¬ν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

 

2) this(): 같은 클래슀의 λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 

  • λ°˜λ“œμ‹œ μ²« λ²ˆμ§Έ λ¬Έμž₯으둜만 μ‚¬μš©λ  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
  • ν•œ μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ½”λ“œμ˜ μ€‘볡을 λ°©μ§€ν•˜κ³ , μ΄ˆκΈ°ν™” μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 

 


Constructors are special methods used to initialize objects of a class.

 

Constructor overloading refer to have multiple constructors with different parameter lists. Each constructor provides a different way to create an object of the class by accepting different sets of arguments.

 

The 'this' keyword this refers to the current instance of the class. 

'this()' is a special keyword that refers to the current class's constructor. It is used within a constructor to invoke another constructor of the same class.

 

 

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

14 Encapsulation (feat. Access modifier)  (0) 2024.01.20
13 Method  (0) 2024.01.20
11 Class intro - feat. Field (Member variable)  (0) 2024.01.19
10 Object-Oriented Programming (feat. Procedural Programming)  (1) 2024.01.19
9 Two-dimensional Arrays (Feat. Object Array)  (0) 2024.01.19

λŒ“κΈ€