Item 15. Access Modifier
ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํํ๋ผ
์ข์ ์ปดํฌ๋ํธ๋ ๋ด๋ถ ๊ตฌํ์ ์จ๊ฒจ, ๊ตฌํ๊ณผ ์ ๊ณต API๋ฅผ ๊น๋ํ ๋ถ๋ฆฌํด์ฃผ์ด ๊ฐ๋ฐ์ ์ ์ฐ์ฑ์ ๋์ฌ์ค๋ค. ์๋ฐ์์๋ ์ ๊ทผ ์ ํ์๋ฅผ ํตํด ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ ์ดํด ๋ด๋ถ ๊ตฌํ์ ๊ฐ์ถ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ ๊ทผ ์ ํ ์ค์ ์์น
๊ธฐ๋ณธ ์์น์ ์ต์ํ์ ์ ๊ทผ ๊ถํ์ผ๋ก ์ค์ ํ์ฌ ๋ชจ๋ ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ์ฑ์ ๊ฐ๋ฅํ ํ ์ขํ๋ ๊ฒ์ด ์ข๋ค. ๊ฐ์ฅ ์์์ ํด๋์ค์ ์ธํฐํ์ด์ค ๋ถ์ฌํ ์ ์๋ ์ ๊ทผ ์์ค์ ์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
package-private(default): ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ, ๋ด๋ถ ๊ตฌํ์ด๋ฏ๋ก ์ ์ฐํ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅ
public: ๋ชจ๋ ๊ณณ์์ ์ ๊ทผ ๊ฐ๋ฅ, ๊ณต๊ฐ API๊ฐ ๋๋ฏ๋ก ํด๋ผ์ด์ธํธ๊ฐ ํญ์ ์ ๊ทผ ๊ฐ๋ฅ
๋๋ฌธ์ ์ธ๋ถ์์ ์ ๊ทผํ ํ์๊ฐ ์๋ ํด๋์ค๋ ๋ฉค๋ฒ๋ package-private์ผ๋ก ์ค์ ํ์ฌ ๋ด๋ถ ๊ตฌํ์ ๊ฐ์ถ๊ณ , ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง public์ผ๋ก ์ค์ ํ์ฌ ๊ณต๊ฐ API๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ข๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ฉค๋ฒ์ ๊ฒฝ์ฐ private, package-private, protected, public์ 4๊ฐ์ง ์ ๊ทผ ์์ค์ ๋ถ์ฌํ ์ ์๋๋ฐ, ๊ณต๊ฐ API๋ฅผ ์ธ์ฌํ ์ค๊ณํ ํ, ๊ทธ ์ธ์ ๋ฉค๋ฒ๋ private์ผ๋ก ์ค์ ํ ๋ค ํ์ํ ๊ฒฝ์ฐ์๋ง ์ ๊ทผ ์์ค์ ๋์ด๋ ๊ฒ์ด ์ข๋ค.
๊ทธ ์ธ์ ์์ ํด๋์ค ๋ฉ์๋๋ฅผ ์ฌ์ ์ ์, ์์ ํด๋์ค๋ณด๋ค ์ ๊ทผ ์์ค์ ์ข๊ฒ ์ค์ ํ ์ ์๋ค๋ ์ ๋ ์ฃผ์ํด์ผ ํ๋ค.(๋ฆฌ์ค์ฝํ ์นํ ์์น)
์ ๊ทผ ์ ํ ์ค์ ์ ์ฃผ์์ฌํญ
ํ
์คํธ๋ฅผ ๋ชฉ์ ์ผ๋ก ์ ๊ทผ ์์ค์ ๋์ด๋ ๊ฒฝ์ฐ์ package-private ๊น์ง๋ง ํ์ฉํ๋ ๊ฒ์ด ์ข์
๋ณดํต ํ ์คํธ ์ฝ๋๋ ํ ์คํธ ๋์ ์ฝ๋์ ๊ฐ์ ํจํค์ง์ ์์นํ๊ธฐ ๋๋ฌธ์ package-private๊น์ง๋ง ํ์ฉํ๋ฉด ํ ์คํธ ์ฝ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
public ํด๋์ค์ ์ธ์คํด์ค ํ๋๋ ๋๋๋ก public์ด ์๋์ด์ผ ํจ
public์ธ ๊ฒฝ์ฐ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ ์ ์์ผ๋ฉฐ, ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. (์์ธ๋ก ํ์ํ ๊ตฌ์ฑ์์๋ก์ ๊ธฐ๋ณธ ํ์ ์ด๋ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ์์๋ผ๋ฉด public static final๋ก ๊ณต๊ฐํด๋ ๋ฌด๋ฐฉํ๋ค.)
final์ด ์๋๋ผ๋ ๊ฐ๋ณ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ ์ ์์ผ๋ฉฐ, ์ค๋ ๋ ์์ ์ฑ๋ ๋ณด์ฅํ ์ ์์
์ด๋ฏธ ๊ณต๊ฐ๋ ํ๋์ด๊ธฐ ๋๋ฌธ์ public ํ๋๋ฅผ ์์ ๋ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํฐ๋ง์ ํ๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ๋ง๊ฐ๋จ๋ฆด ์ ์์
๋ง์ฝ ๊ฐ๋ณ(๋ฐฐ์ด) ํ๋๋ฅผ ๊ณต๊ฐํด์ผ ํ๋ค๋ฉด, ์๋ ๋ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ค.
๋ชจ๋ ์์คํ
Java 9์์๋ ์ ๊ทผ ์ ์ด๋ฅผ ํ ์ ์๋ ๋ชจ๋ ์์คํ ๊ฐ๋ ์ด ๋์ ๋์์ง๋ง, ๋ง์ ์์ ์ด ํ์ํ๊ณ ์์ง๊น์ง๋ ๋๋ฆฌ ์ฌ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ์๋ตํ๋ค.
Last updated
Was this helpful?