Programming/Java

F003 - Access Modifier

osean 2021. 5. 6. 22:20

ν‰μ†Œμ— μ“°λ˜ κ²ƒλ§Œ μ“°λ˜ λ‚˜

μ§€κΈˆκΉŒμ§€ κ°œλ°œν•˜λ©΄μ„œ μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ—΄μ‹¬νžˆ 썼닀 지웠닀 ν•˜λ©° 개발 ν–ˆμ§€λ§Œ, μ •μž‘ 각각의 의미λ₯Ό μ •ν™•νžˆ νŒŒμ•…ν•˜μ§€ λͺ»ν•˜κ³  κ°œλ°œν–ˆλ‹€. 이번 μ‹œκ°„μ—λŠ” 그런 과거의 λ‚˜λ₯Ό λ°˜μ„±ν•˜κ³ , μ ‘κ·Ό μ œμ–΄μžμ— λŒ€ν•΄ κ³΅λΆ€ν•΄μ„œ 이λ₯Ό μ μž¬μ μ†Œμ— ν™œμš©ν•˜μ—¬ 더 효율적인 κ°œλ°œμ„ μ§„ν–‰ν•˜κ³ μž κΈ°λ‘ν•œλ‹€.


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

μ ‘κ·Ό μ œμ–΄μžλŠ” λ³€μˆ˜, λ©”μ†Œλ“œ, ν΄λž˜μŠ€μ— μ μš©ν•˜μ—¬ ν•΄λ‹Ή μš”μ†Œλ“€μ— μ–Όλ§ˆλ§ŒνΌ μ ‘κ·Ό ν•  수 있게 ν•  것인지 μ§€μ •ν•œλ‹€. μ²˜μŒμ—” public으둜 μ§€μ •ν•΄λ†“μœΌλ©΄ μ–΄λ””μ„œλ“  μ ‘κ·Ό ν•  수 μžˆμœΌλ‹ˆκΉŒ λͺ¨λ“  μš”μ†Œλ₯Ό public으둜 μ§€μ •ν•˜λ©΄ λͺ¨λ“  문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ±° 아냐? 라고 μƒκ°ν•˜λ˜ μ‹œμ ˆμ΄ μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ μ‘°κΈˆμ”© λ°°μ›Œκ°€λ©΄μ„œ μ΄λŸ¬ν•œ 생각은 정말 μ΄ˆλ³΄λΌμ„œ ν•  수 μžˆλŠ” μš©κ°ν•œ 생각이라고 λŠκΌˆλ‹€.

μ΄λŠ” ν”„λ‘œκ·Έλž˜λ°μ„ 더 μ–΄λ ΅κ²Œ ν•˜κΈ° μœ„ν•΄ μ‘΄μž¬ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ§ˆμ„œμžˆλŠ” 자유λ₯Ό μœ„ν•΄ μ‘΄μž¬ν•˜λŠ” 것이닀.

  • μƒν™œμ½”λ”©, μ΄κ³ μž‰ λ‹˜

μƒν™œμ½”λ”© μ˜μƒλ„ ν•¨κ»˜ μ°Έκ³ ν•˜λ©° μ ‘κ·Ό μ œμ–΄μžμ— λŒ€ν•΄ κ³΅λΆ€ν•˜λŠ” 쀑에 μœ„μ˜ 말이 κ°€μž₯ 인상 κΉŠμ—ˆλ‹€. μ™œ 자유λ₯Ό μœ„ν•΄ 규제λ₯Ό ν•˜λŠ” κ²ƒμΌκΉŒ?

더 λ‚˜μ•„κ°€ Java λŠ” OOP(Object Oriented Programing) λ₯Ό 지ν–₯ν•˜λŠ” 언어이고, μ΄λŸ¬ν•œ λ°©λ²•λ‘ μ˜ νŠΉμ§• 쀑 μΊ‘μŠν™”λΌλŠ” 것이 μ‘΄μž¬ν•œλ‹€. 이 μΊ‘μŠν™”λΌλŠ” 것은 λͺ¨λ“ˆμ˜ λ‚΄λΆ€ κ΅¬ν˜„μ„ μ€λ‹‰ν™”ν•˜μ—¬ λ‚΄λΆ€μ—μ„œ λ¬Έμ œλ‚˜ λ³€ν™”κ°€ λ°œμƒν•˜λ”λΌλ„ ν•΄λ‹Ή λͺ¨λ“ˆκ³Ό ν˜‘λ ₯ν•˜λŠ” μ™ΈλΆ€ λͺ¨λ“ˆμ— λ―ΈμΉ˜λŠ” 영ν–₯이 μ€„μ–΄λ“€κ±°λ‚˜ νΌμ Έλ‚˜κ°€μ§€ μ•Šλ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€. (응집도와 결합도에 λŒ€ν•΄ μΆ”ν›„ κ³΅λΆ€ν•˜μž!) μ΄λŸ¬ν•œ λ°©λ²•λ‘ μ˜ νŠΉμ§•μ„ μ€€μˆ˜ν•˜κΈ° μœ„ν•΄ μ ‘κ·Ό μ œμ–΄μžκ°€ ν•„μš”ν•œ 것이닀.

μ ‘κ·Ό μ œμ–΄μžλΌλŠ” 녀석듀

이제 μ ‘κ·Ό μ œμ–΄μžλΌλŠ” 녀석'λ“€'을 ν•˜λ‚˜μ”© μ‚΄νŽ΄λ³΄λ €κ³  ν•œλ‹€.

λŒ€ν‘œμ μœΌλ‘œ privatedefaultprotectedpublic 순으둜 μ ‘κ·Ό κΆŒν•œμ΄ 점점 λ„“μ–΄μ§€λŠ”λ°, λ‚˜λŠ” μ•„μ§κΉŒμ§€ private와 public μ΄μ™Έμ˜ μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš©ν•΄λ³΄μ§€ λͺ»ν–ˆλ‹€.

  1. private
    • 말 κ·ΈλŒ€λ‘œ ꡉμž₯히 ν”„λΌμ΄λΉ—ν•œ μ ‘κ·Ό μ œμ–΄μžμ΄λ‹€.
    • ν•΄λ‹Ή μ ‘κ·Ό μ œμ–΄μžκ°€ μ„ μ–Έλœ λ³€μˆ˜ ν˜Ήμ€ λ©”μ†Œλ“œλŠ” μžμ‹ μ΄ μ†ν•œ 클래슀 λ°”κΉ₯μ—μ„œ 호좜될 수 μ—†λ‹€. 즉, 감μ˜₯에 κ°‡νžŒ 것과 λ§ˆμ°¬κ°€μ§€λΌκ³  λ³Ό 수 μžˆλ‹€.
    • private μ ‘κ·Ό μ œμ–΄μžλŠ” ν΄λž˜μŠ€μ—μ„œ μ„ μ–Έν•˜μ§€ λͺ»ν•œλ‹€.
  2. default
    • κΈ°λ³Έ μ ‘κ·Ό μ œμ–΄μžμ΄κΈ° λ•Œλ¬Έμ— λ³€μˆ˜, λ©”μ†Œλ“œ, 클래슀 μ•žμ— μ ‘κ·Ό μ œμ–΄μžκ°€ μƒλž΅λ˜μ–΄ μžˆλ‹€λ©΄ ν•΄λ‹Ή μš”μ†ŒλŠ” **default** μ ‘κ·Ό μ œμ–΄μžλ‘œ μ„ μ–Έλλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
    • ν•΄λ‹Ή μ ‘κ·Ό μ œμ–΄μžκ°€ 호좜된 μš”μ†ŒλŠ” λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œ 호좜이 λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ, ν•΄λ‹Ή μš”μ†Œκ°€ μ†ν•œ νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλŠ” λͺ¨λ“ κ²Œ ν—ˆμš©λ˜λŠ” μ ‘κ·Ό μ œμ–΄μžμ΄λ‹€.
  3. protected
    • ν•΄λ‹Ή μ ‘κ·Ό μ œμ–΄μžλŠ” ν΄λž˜μŠ€μ—μ„œ μ„ μ–Έν•˜μ§€ λͺ»ν•œλ‹€.
    • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή μ ‘κ·Ό μ œμ–΄μžκ°€ μ„ μ–Έλœ λ³€μˆ˜, λ©”μ†Œλ“œλŠ” μžμ‹ μ΄ μ†ν•œ 클래슀의 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ ν˜ΈμΆœλœλ‹€.
    • λ˜λŠ” μ™ΈλΆ€ νŒ¨ν‚€μ§€μ—μ„œ ν•΄λ‹Ή 클래슀λ₯Ό μƒμ†ν•œλ‹€λ©΄ μ˜ˆμ™Έμ μœΌλ‘œ 호좜 ν•  수 μžˆλ‹€.
  4. public
    • λͺ¨λ“  것이 ν—ˆμš©λœ μ˜€ν”ˆ λ§ˆμΈλ“œμ˜ μ ‘κ·Ό μ œμ–΄μž
    • λ³€μˆ˜, λ©”μ†Œλ“œ, 클래슀 λͺ¨λ“  μš”μ†Œμ— μ„ μ–Έ κ°€λŠ₯ν•˜λ©°, μžμ‹ μ΄ μ†ν•œ νŒ¨ν‚€μ§€λŠ” μ™ΈλΆ€ νŒ¨ν‚€μ§€λŠ” 관계없이 μ ‘κ·Ό κ°€λŠ₯ν•œ μ ‘κ·Ό μ œμ–΄μžμ΄λ‹€.

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

F005 - Stack & Heap Memory  (0) 2021.05.08
F004 - Reference Type  (0) 2021.05.08
F002 - Primitive Type  (0) 2021.05.06
F001 - psvm  (0) 2021.05.06
TIL_W02 | Variable, Primitive / Reference Type, Literal, Array  (0) 2020.12.15