πŸ“™ Java

[Java] μΊ‘μŠν™” πŸ’Š

ji_wonna 2022. 9. 6. 16:31

μΊ‘μŠν™”

μΊ‘μŠν™”λž€ 객체와 κ΄€λ ¨λœ 속성과 κΈ°λŠ₯을 캑슐둜 λ§Œλ“€μ–΄ μ™ΈλΆ€λ‘œλΆ€ν„° 정보λ₯Ό λ³΄ν˜Έν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. μΊ‘μŠν™”μ˜ κ°€μž₯ 큰 μž₯점은 정보λ₯Ό 은닉할 수 μžˆλ‹€λŠ” 것이닀. 객체의 κΈ°λŠ₯κ³Ό 속성이 μ™ΈλΆ€λ‘œλΆ€ν„° ν•¨λΆ€λ‘œ λ³€κ²½λ˜μ§€ λͺ»ν•˜κ²Œ ν•΄ μ€€λ‹€. 또 각각의 객체가 λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— μ½”λ“œ ν™•μž₯ μ‹œμ—λ„ 였λ₯˜λ₯Ό μ΅œμ†Œν™”ν•  수 μžˆμ–΄μ„œ μœ μ§€λ³΄μˆ˜μ— μš©μ΄ν•˜λ‹€. μžλ°”μ—μ„œλŠ” μ ‘κ·Ό μ œμ–΄μž(Access Modifier)와 getter, setter λ©”μ„œλ“œλ₯Ό μ€‘μ‹¬μœΌλ‘œ μΊ‘μŠν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€.

 

 

μ ‘κ·Ό μ œμ–΄μž(Access Modifier)

μžλ°”μ—μ„œ μ œμ–΄μžλŠ” μ ‘κ·Ό μ œμ–΄μžμ™€ 기타 μ œμ–΄μž(static, final, abstract, native, transient, synchronized λ“±)둜 ꡬ뢄할 수 μžˆλ‹€. ν•˜λ‚˜μ˜ λŒ€μƒμ— λŒ€ν•΄ μ—¬λŸ¬ μ œμ–΄μžλ₯Ό μ‚¬μš©ν•  수 μžˆμœΌλ‚˜ μ ‘κ·Ό μ œμ–΄μžλŠ” ν•˜λ‚˜λ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

μ ‘κ·Ό μ œμ–΄μžλŠ” μ •λ³΄μ˜ 보호 μΈ‘λ©΄μ—μ„œ 맀우 μ€‘μš”ν•œ 역할을 μˆ˜ν–‰ν•˜λ©° μ ‘κ·Ό μ œν•œ λ²”μœ„μ— 따라 public, protected, default, private λ„€ κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€. μ ‘κ·Ό μ œμ–΄μžλ₯Ό 뢙이지 μ•Šμ€ 경우 μžλ™μœΌλ‘œ defaultκ°€ 되며 λ‹€μŒκ³Ό 같이 정리할 수 μžˆλ‹€.

public [μ œν•œ μ—†μŒ] > protected [같은 νŒ¨ν‚€μ§€ + ν•˜μœ„ 클래슀] > default [같은 νŒ¨ν‚€μ§€] > private [같은 클래슀]

 

 

getter, setter

μΊ‘μŠν™” 원칙을 μœ μ§€ν•˜λ©΄μ„œ μ ‘κ·Ό μ œν•œμ΄ μžˆλŠ” 데이터λ₯Ό μ½μ–΄μ˜€κ±°λ‚˜ λ³€κ²½ν•˜κ³  싢을 λ•Œμ—λŠ” μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ?

이런 κ²½μš°μ—λŠ” getter와 setter λ©”μ„œλ“œλ₯Ό public λ“±μ˜ μ ‘κ·Ό κ°€λŠ₯ν•œ μ œμ–΄μžλ‘œ μž‘μ„±ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆλ‹€.

일반적으둜 λ©”μ„œλ“œ μ•žμ— get-, set-을 λΆ™μ—¬ μ •μ˜ν•œλ‹€.