Skip to content

Latest commit

ย 

History

History
57 lines (42 loc) ยท 4.17 KB

Item_15._field_access_modifier.md

File metadata and controls

57 lines (42 loc) ยท 4.17 KB

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

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

  • ์ž˜ ์„ค๊ณ„๋œ ์ปดํฌ๋„ŒํŠธ๋ผ๋ฉด ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์™„๋ฒฝํžˆ ์ˆจ๊ฒจ์•ผ ํ•จ
    • ์ด๋ฅผ ์ •๋ณด ์€๋‹‰(์บก์Šํ™”) ๋ผ๊ณ  ๋ถ€๋ฆ„
  • ์™ธ๋ถ€์—์„œ๋Š” ๋‹จ์ˆœํžˆ API๋ฅผ ํ˜ธ์ถœํ•ด ์›ํ•˜๋Š” ๋™์ž‘๋งŒ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ์–ด๋–ป๊ฒŒ ๋˜์–ด ์žˆ๋Š”์ง€๋Š” ์•Œ ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•ด์•ผ ํ•จ
  • ๊ทธ๋ž˜์•ผ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

์ •๋ณด ์€๋‹‰์˜ ์žฅ์ 

  • ์ •๋ณด ์€๋‹‰์˜ ์žฅ์ ์€ ์€๋‹‰๋œ ๋ถ€๋ถ„์€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋…๋ฆฝ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์„ ๋ณ‘๋ ฌํ™”ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ์ตœ์ ํ™” ๋“ฑ์˜ ์ž‘์—…์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ
    • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๋ฏ€๋กœ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Œ
    • ํ…Œ์ŠคํŠธ, ์ตœ์ ํ™” ๋“ฑ์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ํšจ์œจ์ 
  • ๋˜ํ•œ, ๋‚ด๋ถ€ ์—ญ์‹œ ์™ธ๋ถ€์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ
  • ๋‚ด๋ถ€๊ฐ€ ์ œ๋Œ€๋กœ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋„ ์™ธ๋ถ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
    • ๋‹จ์ˆœํžˆ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ฟ์ด๋ฏ€๋กœ, ๊ทธ๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋จ
    • API ๋‚ด๋ถ€๊ฐ€ ๋ฏธ๊ตฌํ˜„ ์ƒํƒœ๋ผ๊ณ  ํ•˜๋”๋ผ๋„, API๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ mock ํ…Œ์ŠคํŠธ ๋“ฑ์„ ํ†ตํ•ด ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ์˜ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

์ •๋ณด ์€๋‹‰์˜ ํ•ต์‹ฌ์€ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ

  • ์ •๋ณด ์€๋‹‰์˜ ๊ธฐ๋ณธ ์›์น™์€ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ
  • ํ•„๋“œ๋Š” ํฌ๊ฒŒ ์™ธ๋ถ€์—์„œ API์ฒ˜๋Ÿผ ์—ฌ๊ธฐ๋Š” ๊ฒƒ๊ณผ ์™ธ๋ถ€์—์„œ ์กด์žฌ์กฐ์ฐจ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ถ„๋ฆฌ
    • public, protected ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ ๊ณต๊ฐœ API๋กœ ์ทจ๊ธ‰๋จ
      • public์€ ์ง์ ‘ ํ˜ธ์ถœํ•ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋‹น์—ฐํ•œ ๊ฒƒ์ด๊ณ , protected๋Š” ์ด๋ฅผ ์ƒ์†ํ•˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
    • package, private ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ ํŒจํ‚ค์ง€ ์™ธ๋ถ€์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์™ธ๋ถ€์—์„œ๋Š” ์ด๋“ค์˜ ์กด์žฌ์กฐ์ฐจ ๋ชจ๋ฅด๋ฉฐ, ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ์ˆ˜์ •๋˜์–ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Œ
      • ์ด์™€ ๋‹ฌ๋ฆฌ API๋Š” ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•จ์€ ๋ฌผ๋ก , ํ•ญ์ƒ ํ•˜์œ„ ํ˜ธํ™˜์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ
  • ๋”ฐ๋ผ์„œ, private์„ package๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊นŒ์ง€๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ๊ทธ๋ณด๋‹ค ๋„“์€ ๋ฒ”์œ„์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋งค์šฐ ์‹ฌ์‚ฌ์ˆ™๊ณ ํ•ด์•ผ ํ•จ

public ํด๋ž˜์Šค์˜ ํ•„๋“œ๋Š” public์ด ์•„๋‹ˆ์–ด์•ผ ํ•จ

public ๊ฐ€๋ณ€(non-final) ํ•„๋“œ์˜ ๋ฌธ์ œ์ 

  • public ๊ฐ€๋ณ€ ํ•„๋“œ๋Š” ์™ธ๋ถ€์—์„œ ์ด ํ•„๋“œ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ด๋Š” ์ด ํ•„๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์€ ๋ถˆ๋ณ€์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธ
  • ๋˜ํ•œ, ์Šค๋ ˆ๋“œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜๋„ ์—†์Œ
  • ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์ด ํ•„๋“œ๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ ๋‹ค๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

public ๋ถˆ๋ณ€(final) ํ•„๋“œ์˜ ๋ฌธ์ œ์ 

  • ํ•„๋“œ๊ฐ€ ๋ถˆ๋ณ€์ด๋ผ ํ•ด๋„ ํ• ๋‹น๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ณ€์ธ ๊ฒฝ์šฐ ๊ฐ์ฒด ๋‚ด๋ถ€ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์€ ์—ฌ์ „ํžˆ ์กด์žฌ
    • ์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€๋กœ ๋ฐฐ์—ด ํ•„๋“œ์—๋Š” public ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์ ‘๊ทผ์ž ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ฉด ์•ˆ ๋จ
  • ๋ถˆ๋ณ€์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ์—๋„, ์–ด์จŒ๋“  ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ public์ด๋ผ ์ด ํ•„๋“œ๋Š” API์ด๋ฏ€๋กœ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ

public์ด ํ—ˆ์šฉ๋˜๋Š” ํ•„๋“œ

  • ์ด ํ•„๋“œ๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ํ‘œํ˜„ํ•˜๋Š” ์ถ”์ƒ ๊ฐœ๋…์˜ ๊ตฌ์„ฑ ์š”์†Œ์— ํ•ด๋‹นํ•˜๋Š” ์ƒ์ˆ˜์ธ ๊ฒฝ์šฐ

    • ex) ์•ž์„  Item 14์—์„œ ๋ดค๋˜ String ํด๋ž˜์Šค์˜ CASE_INSENSITIVE_ORDER ํ•„๋“œ๊ฐ€ ์ด์— ํ•ด๋‹น

      // ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ์ˆ˜ ํ•„๋“œ
      public static final Comparator<String> CASE_INSENSITIVE_ORDER
                                           = new CaseInsensitiveComparator();
  • ์ด ๊ฒฝ์šฐ ํ•„๋“œ๋ช…์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋‹จ์–ด ์‚ฌ์ด๋Š” ์–ธ๋”๋ฐ”(_)๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€

  • ์ฆ‰, ์ƒ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” static final ํ•„๋“œ๊ฐ€ ์•„๋‹ˆ๊ณ ์„œ์•ผ public ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ ๋ถ€์—ฌ๋˜๋ฉด ์•ˆ ๋จ