[Kotlin] μƒμ„±μž

πŸ’‘ μ½”ν‹€λ¦°μ—μ„œλŠ” κ°„λ‹¨ν•˜κ³ , λ‹€μ–‘ν•˜κ²Œ μƒμ„±μžλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μƒμ„±μžμ— λŒ€ν•˜μ—¬ ν•™μŠ΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

μ£Όμƒμ„±μž (Primary Constructor)

class Movie(val name: String, val time: String)
  • μœ„μ™€ 같이 클래슀 이름 μ˜†μ— κ΄„ν˜Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ μ½”λ“œλ₯Ό μ£Ό μƒμ„±μžλΌκ³  ν•©λ‹ˆλ‹€.
  • μƒμ„±μž νŒŒλΌλ―Έν„°λ₯Ό μ§€μ •ν•˜κ³ , κ·Έ νŒŒλΌλ―Έν„°μ— μ˜ν•΄ μ΄ˆκΈ°ν™”λ˜λŠ” ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•˜λŠ” λͺ©μ μ— μ“°μž…λ‹ˆλ‹€.
    • μƒμ„±μž νŒŒλΌλ―Έν„° : 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬λ˜λŠ” κ°’
      • 객체가 생성될 λ•Œ ν•„μš”ν•œ 초기 μ„€μ • 값을 제곡
      class Movie(name: String)
      
    • ν”„λ‘œνΌν‹° : ν΄λž˜μŠ€μ— μ •μ˜λœ λ³€μˆ˜λ‘œ, 클래슀의 속성을 λ‚˜νƒ€λƒ„
      • 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λ©°, 객체가 μ‘΄μž¬ν•˜λŠ” λ™μ•ˆ 값을 μœ μ§€ν•˜κ³  μ‚¬μš© κ°€λŠ₯
      class Movie(val name: String)
      
  • constructor ν‚€μ›Œλ“œ
    • μ‹€μ œλ‘œλŠ” constructor ν‚€μ›Œλ“œκ°€ μƒλž΅λœ κ²ƒμž…λ‹ˆλ‹€.
    • μ£Ό μƒμ„±μžκ°€ μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‚˜ μ ‘κ·Ό μ œμ–΄μž(private, protected..)을 가지면 μƒλž΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
    class Movie private constructor(val name: String)
    
  • Init 블둝
    • μ½”ν‹€λ¦°μ˜ μ£Ό μƒμ„±μžμ— μ½”λ“œλ₯Ό μΆ”κ°€ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ ν•©λ‹ˆλ‹€.
    • μœ νš¨μ„± 검증 λ“±μ˜ μ΄ˆκΈ°ν™” μ‹œμ— ν•„μš”ν•œ μž‘μ—…μ€ Init 블둝을 ν™œμš©ν•©λ‹ˆλ‹€.

λΆ€μƒμ„±μž (Secondary Constructor)

class Movie(val name: String) {
	var time: String = "2024-06-16"
	var price: Int = 3000
	
	constructor(name: String, time: String){
		this.time = time
	} // 컴파일 μ—λŸ¬ λ°œμƒ
	
	constructor(name: String, time: String): this(name) {
		this.time = time
	}
	
	constructor(name: String, time: String, price: Int): this(name,time) {
		this.price = price
	}
  • λΆ€μƒμ„±μžλŠ” 클래슀 내에 μ‘΄μž¬ν•˜λŠ” μƒμ„±μžμ΄λ©°, constructor ν‚€μ›Œλ“œλ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.
  • 컴파일 μ—λŸ¬ ?
    • μ£Όμƒμ„±μžκ°€ μ‘΄μž¬ν•œλ‹€λ©΄, λΆ€μƒμ„±μžλŠ” λ°˜λ“œμ‹œ μ£Όμƒμ„±μžμ—κ²Œ μ§κ°„μ ‘μ μœΌλ‘œ 생성을 μœ„μž„ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    • μ΄λŠ” λΆ€μƒμ„±μžλŠ” λ°˜λ“œμ‹œ μ£Όμƒμ„±μžμ— λŒ€ν•œ νŒŒλΌλ―Έν„°λ‚˜ ν”„λ‘œνΌν‹°λ₯Ό μœ„μž„ν•΄μ•Όν•¨μ„ λœ»ν•©λ‹ˆλ‹€.
  • λΆ€μƒμ„±μžμ™€ Init 블둝
    • λΆ€μƒμ„±μžμ™€ Init 블둝이 μ‘΄μž¬ν•œλ‹€λ©΄ λ°˜λ“œμ‹œ Init 블둝이 λ¨Όμ € μˆ˜ν–‰λ©λ‹ˆλ‹€.