λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“± Mobile/iOS

[iOS - Swift] Final ν‚€μ›Œλ“œ

Swiftμ—μ„œλŠ” 클래슀의 상속을 μ§€μ›ν•œλ‹€.

 

상속 

SwiftλŠ” 객체지ν–₯ν˜• ν”„λ‘œκ·Έλž˜λ°μ„ λ‹€λ£° 수 μžˆλŠ” 언어이닀.

객체지ν–₯ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§•μ€ 좔상화, μΊ‘μŠν™”, 은닉화, 상속성, λ‹€ν˜•μ„±μ΄ μžˆλŠ”λ° 

 

κ·Έ μ€‘μ—μ„œ 상속성은 μƒμœ„ κ°œλ…μ˜ νŠΉμ§•μ„ ν•˜μœ„ κ°œλ…μ΄ λ¬Όλ € λ°›μ•„μ„œ μ‚¬μš©ν•˜λŠ” 것이닀. 

즉, λΆ€λͺ¨-μžμ‹ κ°„μ˜ κ°œλ…μ„ μƒκ°ν•˜λ©΄ λœλ‹€. 

 

 

final

μ–Έμ œ μ‚¬μš©ν•¨??🧐

더 이상 ν•΄λ‹Ή ν΄λž˜μŠ€μ—μ„œ ν•˜μœ„ 클래슀둜의 전체 클래슀 λ˜λŠ” 일뢀가 상속 λ˜λŠ” 상속에 λ”°λ₯Έ μž¬μ •μ˜κ°€ 될 ν•„μš”κ°€ μ—†λ‹€κ³  νŒλ‹¨ν•œ 경우 final ν‚€μ›Œλ“œλ₯Ό μš”μ†Œ μ•žμ— μΆ”κ°€ν•¨μœΌλ‘œμ¨ 상속을 λ°©μ§€ν•œλ‹€.

 

final은 ‘λ§ˆμ§€λ§‰’, ‘μœ μΌν•œ’ μ΄λΌλŠ” 의미λ₯Ό 가진닀.

즉, 클래슀 μ•žμ— final을 뢙이면 ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” ‘상속할 수 μ—†λŠ” 클래슀’ λΌλŠ” 의미λ₯Ό κ°€μ§€κ²Œ λœλ‹€.
λ§ˆμ°¬κ°€μ§€λ‘œ, ν•¨μˆ˜μ— final을 뢙이면 ‘override(μž¬μ •μ˜) ν•  수 μ—†λŠ” ν•¨μˆ˜’ λ¦¬λŠ” 의미λ₯Ό κ°€μ§€κ²Œ λœλ‹€.

 

 

 

final은 μ„±λŠ₯적으둜 이점을 κ°€μ§€λŠ”λ° μœ„μ—μ„œ μ„€λͺ…ν•œ κ²ƒμ²˜λŸΌ final둜 μ„ μ–Έν•œ ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜λŠ” μœ μΌν•˜λ‹€.

 

  • 상속이 λ˜μ§€ μ•ŠλŠ”λ‹€. 
  • μž¬μ •μ˜λ„ λ˜μ§€ μ•ŠλŠ”λ‹€. 
  • 'μœ μΌν•¨'을 보μž₯λ°›λŠ”λ‹€. 
  • Dynamic Dispatchλ₯Ό 쀄여주어 μ„±λŠ₯을 ν–₯μƒμ‹œν‚¨λ‹€. 

 

 

 

SwiftλŠ” ν΄λž˜μŠ€κ°€ λ©”μ†Œλ“œλ‚˜ ν”„λ‘œνΌν‹°λ₯Ό 상속할 수 μžˆλ‹€!!

final 둜 μ„ μ–Έλœ μš”μ†Œλ“€μ€ 상속이 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— Dynamic Dispatchλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλ‹€.

즉, μ»΄νŒŒμΌλŸ¬λŠ” indirect call, indirect accessλ₯Ό λ¬΄μ‹œν•  수 있게 λ˜λ―€λ‘œ μ„±λŠ₯이 ν–₯μƒν•˜κ²Œ λœλ‹€!

 

 

 

 

728x90