Bibi's DevLog πŸ€“πŸŽ

[Java] μ ‘κ·Όμ œμ–΄μž λ³Έλ¬Έ

πŸ–₯ BE λ°±μ—”λ“œ/Java μžλ°”

[Java] μ ‘κ·Όμ œμ–΄μž

λΉ„λΉ„ bibi 2021. 2. 16. 00:11

μ ‘κ·Όμ œμ–΄μž Access modifier

: 클래슀 μ™ΈλΆ€μ—μ„œμ˜ ν΄λž˜μŠ€μ— λŒ€ν•œ 접근을 μ–΄λŠ μ •λ„κΉŒμ§€ ν—ˆμš©ν• μ§€ 지정할 수 μžˆλŠ” μžλ°” μ˜ˆμ•½μ–΄.

  • 객체지ν–₯ - 정보 은닉(data hiding)
    : μ‚¬μš©μžκ°€ ꡳ이 μ•Œ ν•„μš” μ—†λŠ” μ •λ³΄λŠ” μ‚¬μš©μžλ‘œλΆ€ν„° μˆ¨κΈ΄λ‹€.
    μ‚¬μš©μžλŠ” μ΅œμ†Œν•œμ˜ μ •λ³΄λ§ŒμœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ†μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • μžλ°”λŠ” 정보은닉을 κ΅¬μ²΄ν™”ν•˜κΈ° μœ„ν•΄ μ ‘κ·Όμ œμ–΄μžλΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
    • 클래슀, λ©”μ†Œλ“œ, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, 클래슀 λ³€μˆ˜ μ„ μ–Έμ‹œ μ‚¬μš©ν•œλ‹€.
  • private < default(package-private) < protected < public 순으둜 μ ‘κ·Ό ν—ˆμš© λ²”μœ„κ°€ λ„“λ‹€.

private

ν•΄λ‹Ή 클래슀 λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯

  • ν•΄λ‹Ή 객체의 public λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
  • 클래슀 λ‚΄λΆ€μ˜ μ„ΈλΆ€ λ™μž‘μ„ κ΅¬ν˜„ν•  λ•Œ μ‚¬μš©

default (package-private)

같은 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯

  • ν•΄λ‹Ή 클래슀 및 같은 νŒ¨ν‚€μ§€μ˜ 클래슀만 μ ‘κ·Ό κ°€λŠ₯

  • μ ‘κ·Ό μ œμ–΄μž μ˜ˆμ•½μ–΄κ°€ λ”°λ‘œ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ (μ ‘κ·Όμ œμ–΄μžκ°€ μƒλž΅λœ 경우 defaultμž„)

  • μžλ°”μ—μ„œ 클래슀 및 멀버 μ ‘κ·Όμ œμ–΄μžμ˜ κΈ°λ³Έκ°’μž„

protected

같은 νŒ¨ν‚€μ§€ 내에 μžˆκ±°λ‚˜ 상속받은 경우 μ ‘κ·Ό κ°€λŠ₯

  • ν•΄λ‹Ή 클래슀, 같은 νŒ¨ν‚€μ§€, λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ μžμ‹ 클래슀만 μ ‘κ·Ό κ°€λŠ₯

  • λΆ€λͺ¨ ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œλŠ” publicλ©€λ²„μ²˜λŸΌ, μ™ΈλΆ€μ—μ„œλŠ” privateλ©€λ²„μ²˜λŸΌ 취급됨

public

λˆ„κ΅¬λ‚˜ 직접 μ ‘κ·Ό κ°€λŠ₯.

  • ν•΄λ‹Ή 객체λ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨ μ–΄λ””μ—μ„œλ‚˜, λˆ„κ΅¬λ‚˜ 직접 μ ‘κ·Ό κ°€λŠ₯.
  • μžλ°” ν”„λ‘œκ·Έλž¨μ€ publicλ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ ν•΄λ‹Ή 객체의 private멀버에 μ ‘κ·Ό κ°€λŠ₯.
    (private멀버와 μžλ°” ν”„λ‘œκ·Έλž¨ κ°„ μΈν„°νŽ˜μ΄μŠ€ 역할을 μˆ˜ν–‰ν•¨)