# [Java] μ ‘κ·Ό μ œμ–΄μž(public, protected, default, private)에 λŒ€ν•΄
Study Repository

[Java] μ ‘κ·Ό μ œμ–΄μž(public, protected, default, private)에 λŒ€ν•΄

by rlaehddnd0422

클래슀의 멀버인 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, λ©”μ†Œλ“œμ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ μ§€μ •ν•˜λŠ” 4가지 μ ‘κ·Ό μ œμ–΄μžμ— λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.

 

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³Όλ₯¨μ΄ 컀질수둝, λ¬Έμ œκ°€ 생길 ν™•λ₯ λ„ λ†’μ•„μ§‘λ‹ˆλ‹€. 빈번히 λ°œμƒλ˜λŠ” λ¬Έμ œλ‘œλŠ” 객체λ₯Ό μ‚¬μš©ν•˜λŠ” μž…μž₯μ—μ„œ 객체 λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œμ— μ ‘κ·Όν•¨μœΌλ‘œμ¨ κ°œλ°œμžκ°€ μ˜λ„ν•˜μ§€ λͺ»ν•œ μ˜€λ™μž‘μ„ μΌμœΌν‚€λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 객체가 λ‚΄λΆ€μ μœΌλ‘œ κ°€μ§€λŠ” 객체의 λ‘œμ§μ„ λ³΄ν˜Έν•˜κΈ° μœ„ν•΄μ„œλŠ” μ™ΈλΆ€μ˜ 접근을 ν—ˆμš©ν•˜κ±°λ‚˜ 차단해야 ν•  ν•„μš”κ°€ μƒκΉλ‹ˆλ‹€. 

 

μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš©ν•˜λŠ” 이유

μ ‘κ·Ό μ œμ–΄μžλŠ” μœ„μ— μ„œμˆ ν•œ λ¬Έμ œμ™€ 같이 μ˜λ„μΉ˜ μ•Šμ€ μ‹€μˆ˜λ‘œ μΈν•œ λ™μž‘μ„ 쀄이고 객체가 κ°€μ§€λŠ” 정보에 λŒ€ν•œ 접근을 λ§‰λŠ” μ€λ‹‰μ˜ λͺ©μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

 

μžλ°”μ—λŠ” 4가지 μ ‘κ·Ό μ œμ–΄μžκ°€ μžˆμŠ΅λ‹ˆλ‹€. public, protected, default, private

  • public : μ–΄λŠ κ³³μ—μ„œλ‚˜ μ ‘κ·Ό κ°€λŠ₯, 즉 μ ‘κ·Ό μ œμ•½μ΄ X
  • protected : 동일 νŒ¨ν‚€μ§€ 내에 μ‘΄μž¬ν•˜κ±°λ‚˜, ν•΄λ‹Ή 클래슀λ₯Ό 상속받은 μ™ΈλΆ€ νŒ¨ν‚€μ§€μ˜ ν΄λž˜μŠ€μ—μ„œ 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 
    • ν•΄λ‹Ή 클래슀λ₯Ό 상속받지 μ•Šμ€ μ™ΈλΆ€ νŒ¨ν‚€μ§€μ˜ ν΄λž˜μŠ€μ—μ„œλŠ” 접근이 λΆˆκ°€λŠ₯ 
  • default : μ•„λ¬΄λŸ° μ ‘κ·Ό μ œν•œμžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ default둜 μ„€μ •λ˜λŠ”λ°, μ΄λŠ” μ΅œλŒ€ λ™μΌν•œ νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œλŠ” μ ‘κ·Ό λΆˆκ°€ 
  • private : 자기 μžμ‹ μ˜ 클래슀 λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
    • μ˜€λ‘œμ§€ 같은 ν΄λž˜μŠ€μ—μ„œλ§Œ 접근이 κ°€λŠ₯

 

μ ‘κ·Ό μ œμ–΄μž μ‚¬μš© λ²”μœ„

  • 클래슀 : public, default만 μ„€μ • κ°€λŠ₯
  • λ©”μ†Œλ“œ : λͺ¨λ“  μ ‘κ·Όμ œμ–΄μž μ‚¬μš© κ°€λŠ₯
  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ : λͺ¨λ“  μ ‘κ·Όμ œμ–΄μž μ‚¬μš© κ°€λŠ₯
  • 지역 λ³€μˆ˜ : μ‚¬μš© λΆˆκ°€

 

ν΄λž˜μŠ€μ—μ„œ public default만 μ„€μ • κ°€λŠ₯ν•œ 이유

  • μš°μ„  private둜 클래슀λ₯Ό μƒμ„±ν•΄λ΄€μž (생성할 수 μ—†μ§€λ§Œ)μΈμŠ€ν„΄μŠ€ 생성이 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
  • protected μ ‘κ·Ό μ œμ–΄μžλŠ” 주둜 μƒμœ„ 클래슀의 멀버λ₯Ό ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μž¬μ‚¬μš©/ν™•μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ”λ°, 클래슀 자체λ₯Ό protected둜 선언해버리면 λ‹€λ₯Έ ν΄λž˜μŠ€κ°€ ν•΄λ‹Ή 클래슀λ₯Ό extends ν‚€μ›Œλ“œ 없이 상속할 수 μžˆλ‹€λŠ” μ μ—μ„œ 객체 지ν–₯ λͺ©μ κ³Ό μ–΄κΈ‹λ‚©λ‹ˆλ‹€.
  • λ˜ν•œ 

 

ν•¨μˆ˜ λ‚΄μ—μ„œ μ„ μ–Έλ˜λŠ” λ³€μˆ˜μΈ μ§€μ—­λ³€μˆ˜μ—λŠ” μœ„μ™€ 같은 μ ‘κ·Ό μ œμ–΄μžλ₯Ό 지정할 수 μ—†μŠ΅λ‹ˆλ‹€.

  • ν•΄λ‹Ή 블둝 λ‚΄μ—μ„œλ§Œ μœ νš¨ν•œ μ§€μ—­λ³€μˆ˜λŠ” μ–΄μ°¨ν”Ό λ‹€λ₯Έ λ©”μ†Œλ“œλ‚˜ ν΄λž˜μŠ€μ—μ„œ μ ‘κ·Όν•  수 μ—†κΈ° λ•Œλ¬Έμ— μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ§€μ •ν•˜λŠ” 것이 λ¬΄μ˜λ―Έν•˜λ‹€κ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 지역 λ³€μˆ˜λŠ” μ–΄μ°¨ν”Ό ν•΄λ‹Ή λΈ”λ‘μ˜ 싀행이 λλ‚˜λ©΄ 사라지기 λ•Œλ¬Έμ— μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ„€μ •ν•œλ‹€ 해도 ν•΄λ‹Ή λ³€μˆ˜μ— μ ‘κ·Όν•  수 μ—†λŠ” μ‹œμ μ—μ„œ μ†Œλ©Έν•˜λ―€λ‘œ μ„€μ •ν•˜λŠ” 것이 μ˜λ―Έκ°€ μ—†μŠ΅λ‹ˆλ‹€.

 

 

<참고 자료>

 

[Java] μ ‘κ·Όμ œμ–΄μž(public, private, protected, default)

[Java] μ ‘κ·Όμ œμ–΄μž(public, private, protected, default)

velog.io

 

λΈ”λ‘œκ·Έμ˜ 정보

Study Repository

rlaehddnd0422

ν™œλ™ν•˜κΈ°