Search
moon
sun
πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦

instanceof

νƒœκ·Έ
JAVA
β€’
instanceof

instanceofλž€?

πŸ“Œ
λΆ€λͺ¨λ₯Ό μƒμ†ν•΄μ„œ λ§Œλ“€μ–΄μ§„ μžμ‹ 객체가 μ—¬λŸ¬ νƒ€μž…μΈ κ²½μš°μ— νŠΉμ • ν΄λž˜μŠ€κ°€ λ§žλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•œλ‹€.
if(sun instanceof Parents){ return; }
Java
볡사

이거 κΉŒμ§„ μ•Œκ² λŠ”λ° 그럼 μ‚¬μš©ν•˜λŠ” 것도 μ•Œκ² λŠ”λ° 뭐가 λ¬Έμ œμ•Ό?

πŸ“Œ
instanceof 말고 λ‹€ν˜•μ„±μ„ μ΄μš©ν•˜μ—¬ κ°μ²΄μ—κ²Œ λ¬Όμ–΄λ³΄λŠ” 것? 그것이 더 쒋을 것 κ°™λ‹€ μ™œ? μ΄μœ λŠ” λͺ‡κ°€μ§€ μ‘΄μž¬ν•œλ‹€. μΊ‘μŠν™” 객체지ν–₯μ—μ„œ λ§ν•˜λŠ” μΊ‘μŠν™”λž€ 객체가 κ°€μ§„ μƒνƒœλ‚˜ ν–‰μœ„λ₯Ό λ‹€λ₯Έ 이가 μ‚¬μš©ν•˜κ±°λ‚˜ 보지 λͺ»ν•˜λ„둝 μˆ¨κΈ°λŠ” 것을 μ˜λ―Έν•œλ‹€. ν•˜μ§€λ§Œ instanceofλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, 각 객체가 무엇인지, μ–΄λ–€ 점수λ₯Ό λŒλ €μ£Όμ–΄μ•Όν•˜λŠ”μ§€ λΆˆν•„μš”ν•œ μ™ΈλΆ€μ˜ 객체가 κ·Έ 정보λ₯Ό μ•Œκ²Œ λ˜λŠ” 것이닀. λ•Œλ¬Έμ— μΊ‘μŠν™”κ°€ κΉ¨μ§„λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. μš°λ¦¬λŠ” 각 객체가 κ°€μ§„ μ±…μž„κ³Ό 역할을 뢄리해주고, 이둜 인해 μœ μ§€λ³΄μˆ˜, ν™•μž₯에 μžˆμ–΄ νŽΈλ¦¬ν•¨μ„ μ–»κΈ° μœ„ν•΄ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•œλ‹€. μΊ‘μŠν™”κ°€ 보μž₯λ˜μ§€ μ•ŠμœΌλ©΄ κ·Έ μ˜λ―Έκ°€ μ—†μ–΄μ§„λ‹€. instanceof의 μ‚¬μš©μ„ μ§€μ–‘ν•΄μ•Όν•˜λŠ” κ°€μž₯ μš°μ„ μ μΈ 이유 OCP λ‹€ν˜•μ„±μ„ μ΄μš©ν•˜λ©΄ μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€κ³  κ·Έ 객체에 κ΅¬ν˜„ν•˜λ©΄ λ˜λŠ” λ°˜λ©΄μ— instanceofλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μƒˆλ‘œμš΄ λ©”μ„œλ“œλ₯Ό λ§Œλ“€μ–΄μ£ΌκΈ° μœ„ν•΄ μ‚¬μš©ν•˜κ³  μžˆλŠ” λͺ¨λ“  ν•¨μˆ˜λ₯Ό κ³ μ³μ•Όν•œλ‹€. 즉, OCP(개방-폐쇄 원칙)에 μœ„λ°˜λœλ‹€(μ—¬λ‹΄μœΌλ‘œ 토비에 μŠ€ν”„λ§μ—μ„œλ„ 이런 λΉ„μŠ·ν•œ 말이 λ‚˜μ™”λ‹€. 였히렀 ν™•μΈν•˜λ €λŠ” 주체에 κ·Έ 확인 방법을 λͺ…μ‹œν•΄μ£ΌλŠ” 것이 였히렀 더 쒋을 수 μžˆλ‹€.). SRP κ³Όλ„ν•œ μ±…μž„μ΄ λͺ°λ¦΄ 수 μžˆλ‹€. λ‹¨μˆœνžˆ ν•˜λ‚˜μ˜ νƒ€μž…μ„ ν™•μΈν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ—¬λŸ¬νƒ€μž…μ„ κ²€μ‚¬ν•œλ‹€λ©΄ κ·Έ 객체의 검사 μ˜λ¬΄κ°€ λŠ˜μ–΄λ‚˜λŠ” 것이닀. μ„±λŠ₯(μ§μ ‘μ μœΌλ‘œ ν™•μΈν•˜μ§€ λͺ»ν–ˆλ‹€.) ν•˜μ§€λ§Œ 잘 μ •λ¦¬λœ 글을 ν†΅ν•˜μ—¬ ν™•μΈν–ˆλ‹€.
❗
λ‚˜μ˜ κ²°λ‘  μ‚¬μš©μ€ 해도 λœλ‹€. 단, ν•œ 객체의 검사가 μ•„λ‹Œ μ—¬λŸ¬ 객체의 검사λ₯Ό ν•΄μ•Ό ν•˜κ±°λ‚˜, 또 λ‹€λ₯Έ 객체가 좔가될 μ—¬μ§€κ°€ μ‘΄μž¬ν•œλ‹€λ©΄ ꡳ이 instanceofλ₯Ό μ‚¬μš©ν•  것이 μ•„λ‹ˆλΌ λ‹€ν˜•μ„±μ„ μ΄μš©ν•˜μ—¬ 객체 μžμ‹ μ΄ μžμ‹ μΈμ§€ νŒλ³„ν•΄μ£Όκ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” isXXX()λ©”μ„œλ“œλ₯Ό λ§Œλ“œλŠ” 편이 쒋은 것 κ°™λ‹€.