Programming/Java

F003 - Access Modifier

osean 2021. 5. 6. 22:20

ํ‰์†Œ์— ์“ฐ๋˜ ๊ฒƒ๋งŒ ์“ฐ๋˜ ๋‚˜

์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์—ด์‹ฌํžˆ ์ผ๋‹ค ์ง€์› ๋‹ค ํ•˜๋ฉฐ ๊ฐœ๋ฐœ ํ–ˆ์ง€๋งŒ, ์ •์ž‘ ๊ฐ๊ฐ์˜ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ทธ๋Ÿฐ ๊ณผ๊ฑฐ์˜ ๋‚˜๋ฅผ ๋ฐ˜์„ฑํ•˜๊ณ , ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด์„œ ์ด๋ฅผ ์ ์žฌ์ ์†Œ์— ํ™œ์šฉํ•˜์—ฌ ๋” ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ๊ธฐ๋กํ•œ๋‹ค.


์ ‘๊ทผ ์ œ์–ด์ž

์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค์— ์ ์šฉํ•˜์—ฌ ํ•ด๋‹น ์š”์†Œ๋“ค์— ์–ผ๋งˆ๋งŒํผ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•œ๋‹ค. ์ฒ˜์Œ์—” public์œผ๋กœ ์ง€์ •ํ•ด๋†“์œผ๋ฉด ์–ด๋””์„œ๋“  ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ๋ชจ๋“  ์š”์†Œ๋ฅผ public์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑฐ ์•„๋ƒ? ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋˜ ์‹œ์ ˆ์ด ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์กฐ๊ธˆ์”ฉ ๋ฐฐ์›Œ๊ฐ€๋ฉด์„œ ์ด๋Ÿฌํ•œ ์ƒ๊ฐ์€ ์ •๋ง ์ดˆ๋ณด๋ผ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๊ฐํ•œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋А๊ผˆ๋‹ค.

์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋” ์–ด๋ ต๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์งˆ์„œ์žˆ๋Š” ์ž์œ ๋ฅผ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ƒํ™œ์ฝ”๋”ฉ, ์ด๊ณ ์ž‰ ๋‹˜

์ƒํ™œ์ฝ”๋”ฉ ์˜์ƒ๋„ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•˜๋ฉฐ ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋Š” ์ค‘์— ์œ„์˜ ๋ง์ด ๊ฐ€์žฅ ์ธ์ƒ ๊นŠ์—ˆ๋‹ค. ์™œ ์ž์œ ๋ฅผ ์œ„ํ•ด ๊ทœ์ œ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

๋” ๋‚˜์•„๊ฐ€ Java ๋Š” OOP(Object Oriented Programing) ๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ์–ธ์–ด์ด๊ณ , ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋ก ์˜ ํŠน์ง• ์ค‘ ์บก์Аํ™”๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ์ด ์บก์Аํ™”๋ผ๋Š” ๊ฒƒ์€ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์€๋‹‰ํ™”ํ•˜์—ฌ ๋‚ด๋ถ€์—์„œ ๋ฌธ์ œ๋‚˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ํ•ด๋‹น ๋ชจ๋“ˆ๊ณผ ํ˜‘๋ ฅํ•˜๋Š” ์™ธ๋ถ€ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ค„์–ด๋“ค๊ฑฐ๋‚˜ ํผ์ ธ๋‚˜๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. (์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„์— ๋Œ€ํ•ด ์ถ”ํ›„ ๊ณต๋ถ€ํ•˜์ž!) ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋ก ์˜ ํŠน์ง•์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค.

์ ‘๊ทผ ์ œ์–ด์ž๋ผ๋Š” ๋…€์„๋“ค

์ด์ œ ์ ‘๊ทผ ์ œ์–ด์ž๋ผ๋Š” ๋…€์„'๋“ค'์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ private โ†’ default โ†’ protected โ†’ public ์ˆœ์œผ๋กœ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์ ์  ๋„“์–ด์ง€๋Š”๋ฐ, ๋‚˜๋Š” ์•„์ง๊นŒ์ง€ 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