๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/Java || Spring

[์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”] Item 16.

by bdd 2022. 8. 21.

์ด ๊ธ€์€ ์ธ์‚ฌ์ดํŠธ์˜ EffectiveJava 3rd Edition์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์„ ๋ง๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ ์ด์™ธ์—๋„ ์ข‹์€ ๋‚ด์šฉ์ด ๋งŽ์ด ๋‹ด๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ๊ณต๋ถ€ํ•ด ๋ณด์‹ค ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 

์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” Effective Java 3/E - YES24

์ž๋ฐ” ํ”Œ๋žซํผ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์™„๋ฒฝ ๊ฐ€์ด๋“œ - Java 7, 8, 9 ๋Œ€์‘์ž๋ฐ” 6 ์ถœ์‹œ ์งํ›„ ์ถœ๊ฐ„๋œ ใ€Ž์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” 2ํŒใ€ ์ดํ›„๋กœ ์ž๋ฐ”๋Š” ์ปค๋‹ค๋ž€ ๋ณ€ํ™”๋ฅผ ๊ฒช์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์กธํŠธ์ƒ์— ๋น›๋‚˜๋Š” ์ด ์ฑ…๋„ ์ž๋ฐ” ์–ธ์–ด์™€ ๋ผ์ด๋ธŒ

www.yes24.com

 

 

 

 

 

 

1. package-private


์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ์™ผ์ชฝ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์บก์Šํ™”์˜ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. API๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋‚ด๋ถ€ ํ‘œํ˜„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ณ  ๋ถˆ๋ณ€์‹์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์™ธ๋ถ€์—์„œ ํ•„๋“œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ถ€์ˆ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•„๋“œ๋ฅผ ๋ชจ๋‘ private์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์ ‘๊ทผ์ž๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•„๋“œ๋ฅผ public์œผ๋กœ ๋…ธ์ถœํ•˜๋ฉด ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

ํ•˜์ง€๋งŒ package-private ํ˜น์€ private ์ค‘์ฒฉ ํด๋ž˜์Šค๋ผ๋ฉด ๋ฐ์ดํ„ฐ ํ•„๋“œ๋ฅผ ๋…ธ์ถœํ•ด๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๊ฐ€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋ฌถ์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋„ ์ด ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ํŒจํ‚ค์ง€ ์•ˆ์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒจํ‚ค์ง€ ๋ฐ”๊นฅ์˜ ์ฝ”๋“œ๋Š” ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. private ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ์ˆ˜์ • ๋ฒ”์œ„๊ฐ€ ๋” ์ข๊ธฐ ๋•Œ๋ฌธ์— ์ด ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ์™ธ๋ถ€ ํด๋ž˜์Šค๊นŒ์ง€๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋Š” ํด๋ž˜์Šค๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ”์ƒ ๊ฐœ๋…๋งŒ ์ž˜ ๋‚˜ํƒ€๋‚ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

๋ถˆ๋ณ€ ํ•„๋“œ๋ฅผ ๋…ธ์ถœํ•œ Time ํด๋ž˜์Šค. final ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ์ดํ›„ ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ๊ฐ•์ œํ•˜๋ฉด ์–ด๋Š์ •๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ ˆ๋Œ€ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. * final ํ‚ค์›Œ๋“œ๋Š” ์ƒ์„ฑ์ž์—์„œ ํ•ญ์ƒ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ ์›์‹œํƒ€์ž…์ธ ๊ฒฝ์šฐ ์ดˆ๊ธฐํ™” ๋˜๋ฉด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ์ฒดํƒ€์ž…์˜ ๊ฒฝ์šฐ ์ƒํƒœ๋Š” ๋ณ€ํ•˜์ง€๋งŒ ์ฐธ์กฐ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 

 

 

2. Conclusion


public ํด๋ž˜์Šค๋Š” ์ ˆ๋Œ€ ๊ฐ€๋ณ€ ํ•„๋“œ๋ฅผ ์ง์ ‘ ๋…ธ์ถœํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋ถˆ๋ณ€ ํ•„๋“œ์ผ ๊ฒฝ์šฐ์—๋„ ๋œ ์œ„ํ—˜ํ•˜์ง€๋งŒ ์™„์ „ํžˆ ์•ˆ์‹ฌํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ package-private ํด๋ž˜์Šค๋‚˜ private ์ค‘์ฒฉ ํด๋ž˜์Šค์—์„œ๋Š” ์ข…์ข… ํ•„๋“œ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ํŽธ์ด ๋‚˜์„ ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

๋Œ“๊ธ€