Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

README.md

ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค (4์žฅ)

#15 : ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ตœ์†Œํ™”ํ•˜๋ผ

์ž˜ ์„ค๊ณ„๋œ ์ปดํฌ๋„ŒํŠธ๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๋‚ด๋ถ€ ๊ตฌํ˜„ ์ •๋ณด๋ฅผ ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž˜ ์ˆจ๊ฒจ ์บก์Аํ™”ํ•œ๋‹ค.

์š”์•ฝ

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

์ž˜ ์„ค๊ณ„๋œ ์ปดํฌ๋„ŒํŠธ๋ž€?

  • ์บก์Аํ™”๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋˜์–ด ์žˆ๋Š”์ง€
  • ๋…ธ์ถœ๋˜๋Š” API์™€ ์‹ค์ œ ๊ตฌํ˜„์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š”์ง€
  • ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋‘ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋กœ์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”์ง€

์บก์Аํ™”(์ •๋ณด ์€๋‹‰)์˜ ์žฅ์ 

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

์บก์Аํ™”๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ

  • ๊ธฐ๋ณธ ์›์น™์€ ๋ชจ๋“  ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ฑ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ขํ˜€์•ผ ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•œ public ์‚ฌ์šฉ์€ ์ง€์–‘ํ•œ๋‹ค.
  • private : ๋ฉค๋ฒ„๋ฅผ ์„ ์–ธํ•œ ํ†ฑ๋ ˆ๋ฒจ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • package-private : ๋ฉค๋ฒ„๊ฐ€ ์†Œ์†๋œ ํŒจํ‚ค์ง€ ์•ˆ์˜ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • default
  • protected : package-private์„ ํฌํ•จํ•˜๊ณ , ํ•˜์œ„ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • public : ๋ชจ๋“  ๊ณณ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•  ์ 

  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ private ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ package-private๊นŒ์ง€ ํ‘ธ๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์œผ๋‚˜ ๊ทธ ์ด์ƒ์€ ์•ˆ๋œ๋‹ค.
  • public ํด๋ž˜์Šค์—์„œ ๋ฉค๋ฒ„(ํ•„๋“œ๊ฐ’) ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ package-private์—์„œ protected๋กœ ๋ฐ”๊พธ๋ฉด ํ•ด๋‹น ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง„๋‹ค. (์‚ฌ์‹ค์ƒ ๊ณต๊ฐœ API)
  • public ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋Š” ๋˜๋„๋ก public์ด ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค.
  • public ๊ฐ€๋ณ€ ํ•„๋“œ๋ฅผ ๊ฐ–๋Š” ํด๋ž˜์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์Šค๋ ˆ๋“œ ์„ธ์ดํ”„ํ•˜์ง€ ์•Š๋‹ค.
  • ํด๋ž˜์Šค์—์„œ public static final ๋ฐฐ์—ด ํ•„๋“œ๋ฅผ ๋‘๊ฑฐ๋‚˜ ์ด ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ ‘๊ทผ ์ œ์–ด์ž ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

ํ•ต์‹ฌ ์ •๋ฆฌ

  • public ์‚ฌ์šฉ์„ ์ตœ์†Œ๋กœ ํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜์ž.
  • public ํด๋ž˜์Šค๋Š” public static final ํ•„๋“œ ์™ธ์—๋Š” ์–ด๋–ค public ํ•„๋“œ๋„ ๊ฐ€์ ธ์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • public static final ํ•„๋“œ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ถˆ๋ณ€์ธ์ง€ ํ™•์ธํ•˜์ž.

References


QNA

15-1

15-2

15-3