🌈 [Section1] 12. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°2

ν˜„μ£ΌΒ·2022λ…„ 9μ›” 5일
0

bootcamp

λͺ©λ‘ 보기
12/71

πŸ“• 였늘 배운 λ‚΄μš©!

  • μƒμ„±μž
  • λ‚΄λΆ€ 클래슀

✏️ μƒμ„±μž(Constructor)

클래슀λͺ…(λ§€κ°œλ³€μˆ˜) {
β €
}
  • μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ ν˜ΈμΆœλ˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ΄ˆκΈ°ν™” λ©”μ„œλ“œ ( new μƒμ„±μž(); )
    ( λ©”μ„œλ“œμ΄κΈ° λ•Œλ¬Έμ— λ©”μ„œλ“œ νŠΉμ§• κ·ΈλŒ€λ‘œ 가짐 -> μƒμ„±μžλ„ μ˜€λ²„λ‘œλ”© κ°€λŠ₯ )

  • λͺ¨λ“  ν΄λž˜μŠ€μ—λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μƒμ„±μžκ°€ μžˆμ–΄μ•Όν•¨
    ( μƒμ„±μžκ°€ 없을 경우 μ»΄νŒŒμΌλŸ¬κ°€ μžλ™ 생성 )
    ( 이미 μƒμ„±μžκ°€ μžˆμ„ κ²½μš°μ—λŠ” κΈ°λ³Έ μƒμ„±μžλ³΄λ‹€ λ§Œλ“  μƒμ„±μžλ₯Ό μš°μ„ μ‹œν•¨ )

  • λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜κ²Œλ˜λ©΄ μΈμŠ€ν„΄μŠ€ 생성과 λ™μ‹œμ— μ›ν•˜λŠ” κ°’μœΌλ‘œ 섀정해쀄 수 μžˆμ–΄μ„œ 편리

βœ”οΈ μƒμ„±μžμ™€ λ©”μ„œλ“œμ˜ 차이

(1) μƒμ„±μžμ˜ 이름은 λ°˜λ“œμ‹œ 클래슀의 이름과 κ°™μ•„μ•Ό 함 Ex. Car genesis = new Car();
(2) 리턴 νƒ€μž…μ΄ μ—†μŒ
( μ›λž˜ λ©”μ„œλ“œλŠ” 리턴 νƒ€μž…μ΄ μ—†μœΌλ©΄ void νƒ€μž…μœΌλ‘œ μ¨μ•Όν•˜λŠ”λ° 그것도 μ•ˆμ”€ )


✏️ this() 와 this

βœ” this() λ©”μ„œλ“œ

  • 같은 클래슀 μ•ˆμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²½μš°μ— μ‚¬μš©
    ❗ 쑰건 (1) μƒμ„±μžμ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©
    ❗ 쑰건 (2) μƒμ„±μžμ˜ 첫 쀄에 μœ„μΉ˜ν•΄μ•Ό 함

βœ” this ν‚€μ›Œλ“œ

  • μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” μ°Έμ‘°λ³€μˆ˜ (thisλ₯Ό ν†΅ν•΄μ„œ μΈμŠ€ν„΄μŠ€ μžμ‹ μ˜ λ³€μˆ˜μ— μ ‘κ·Ό κ°€λŠ₯)
  • μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œκ°€ μ €μž₯됨
  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ μƒμ„±μžμ— λ™μΌν•œ μ΄λ¦„μœΌλ‘œ λ³€μˆ˜λ₯Ό μ„€μ •/μ΄ˆκΈ°ν™” ν•΄μ£Όκ²Œ 되면 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ₯Ό 각각 μ΄λ¦„λ§ŒμœΌλ‘œλŠ” κ΅¬λΆ„ν•˜κΈ°κ°€ μ–΄λ €μ›Œμ§ πŸ‘‰ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ‘œ μ •μ˜λœ μ§€μ—­λ³€μˆ˜λ₯Ό κ΅¬λΆ„ν•˜λŠ” 데 μ‚¬μš©
    ( this. λΆ™μœΌλ©΄ μƒμ„±μž )

✏️ λ‚΄λΆ€ 클래슀(Inner Class)

  • 클래슀 내에 μ„ μ–Έλœ 클래슀
  • ν•˜λ‚˜μ˜ μ™ΈλΆ€ 클래슀 μ•ˆμ— μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ 클래슀, 정적 λ‚΄λΆ€ 클래슀, 지역 λ‚΄λΆ€ 클래슀, 읡λͺ… λ‚΄λΆ€ 클래슀 κ°€ 있음 (μ™ΈλΆ€ - λ‚΄λΆ€λ₯Ό 이어쀄 뿐 λ‚˜λ¨Έμ§€ νŠΉμ§•μ€ κ°™μŒ)
  • 멀버 λ‚΄λΆ€ 클래슀 = μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ 클래슀 + 정적 λ‚΄λΆ€ 클래슀

βœ” μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ 클래슀(instance inner class)

  • μœ„μΉ˜ : μ™ΈλΆ€ 클래슀의 멀버 λ³€μˆ˜ 자리
  • 클래슀의 생성과 상관없이 μ‚¬μš©ν•  수 μžˆλŠ” 정적 λ³€μˆ˜μ™€ 정적 λ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ ν΄λž˜μŠ€μ—μ„œ μ„ μ–Έν•  수 μ—†μŠ΅λ‹ˆλ‹€
  • μ‚¬μš© κ°€λŠ₯ν•œ λ³€μˆ˜ : μ™ΈλΆ€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ™ΈλΆ€ μ „μ—­ λ³€μˆ˜

βœ” 정적 λ‚΄λΆ€ 클래슀(static inner class)

  • μœ„μΉ˜ : μ™ΈλΆ€ 클래슀의 멀버 λ³€μˆ˜ 자리
  • μ™ΈλΆ€ 클래슀의 λ©€λ²„λ³€μˆ˜ μ„ μ–Έμœ„μΉ˜μ— μ„ μ–Έ(멀버 λ‚΄λΆ€ 클래슀)
  • 객체 내뢀에 λ©€λ²„μ˜ ν˜•νƒœλ‘œ 쑴재
  • μ™ΈλΆ€ 클래슀의 λͺ¨λ“  μ ‘κ·Ό μ§€μ •μžμ˜ 멀버에 μ ‘κ·Όν•  수 있음
  • -μ™ΈλΆ€ 클래슀의 μ‘΄μž¬μ™€ λ¬΄κ΄€ν•˜κ²Œ 정적 λ³€μˆ˜λ₯Ό μ‚¬μš© κ°€λŠ₯
  • μ‚¬μš© κ°€λŠ₯ν•œ λ³€μˆ˜ : μ™ΈλΆ€ μ „μ—­ λ³€μˆ˜

βœ” 지역 λ‚΄λΆ€ 클래슀(local inner class)

  • μœ„μΉ˜ : μ™ΈλΆ€ 클래슀의 λ©”μ„œλ“œ ν˜Ήμ€ μ΄ˆκΈ°ν™” λΈ”λŸ­ μ•ˆ
  • μ‚¬μš© κ°€λŠ₯ν•œ λ³€μˆ˜ : μ™ΈλΆ€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ™ΈλΆ€ μ „μ—­ λ³€μˆ˜

βœ” 읡λͺ… λ‚΄λΆ€ 클래슀(anonymous inner class)

  • 클래슀의 μ„ μ–Έκ³Ό 객체의 생성을 λ™μ‹œμ— ν•˜λŠ” 일회용 읡λͺ… 클래슀
  • μ‚¬μš© κ°€λŠ₯ν•œ λ³€μˆ˜ : μ™ΈλΆ€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ™ΈλΆ€ μ „μ—­ λ³€μˆ˜

🌈 λŠλ‚€μ 

κ·Έλž˜λ„ 였늘 ν•™μŠ΅μ€ μ–΄μ œμ˜ μ—°μž₯μ„ μœΌλ‘œ μ•½κ°„μ˜ κ°œλ…λ§Œ λ”ν•΄μ Έμ„œ μˆ˜μ›”ν–ˆλ‹€!
λ³΄λ©΄μ„œ 사싀 이해가 잘 λ˜μ§„ μ•Šμ•˜λŠ”λ° μ€Œμ„Έμ…˜μ—μ„œ μ„€λͺ…ν•΄μ£Όμ…”μ„œ 더 이해가 잘 κ°”λ‹€
μ‹¬ν™”λ‘œ ν…μŠ€νŠΈ μŠ€νƒ€ν¬λž˜ν”„νŠΈ ν”„λ‘œκ·Έλž¨ λ§Œλ“œλŠ” 게 μžˆμ—ˆλŠ”λ° μ–΄λ–»κ²Œ 해야할지 감도 μ•ˆμž‘νžˆλŠ” 쀑,, μ°¨κ·Όμ°¨κ·Ό μ•Œμ•„λ΄μ•Όμ§€ γ… 

0개의 λŒ“κΈ€