์ ์ค๊ณ๋ ์ปดํฌ๋ํธ๋ ํด๋์ค ๋ด๋ถ ๋ฐ์ดํฐ์ ๋ด๋ถ ๊ตฌํ ์ ๋ณด๋ฅผ ์ธ๋ถ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ์จ๊ฒจ ์บก์ํํ๋ค.
- ์ ๊ทผ ์ ์ด์๋ ํด๋ผ์ด์ธํธ๋จ ์ฝ๋๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉ๋ ๋ ๋ ํฐ ์๋ฏธ๋ฅผ ๊ฐ๊ฒ๋๋ค.
- ํด๋์ค์ ๋ฉค๋ฒ (ํนํ ๊ฐ๋ณ ๊ฐ์ฒด๋ ๋ฐฐ์ด)์ ๋ํ ์ ๊ทผ ์ ์ด๋ฅผ ์ต์ํํจ์ผ๋ก์ ์บก์ํ์ ๋์ปคํ๋ง, ๊ทธ๋ฆฌ๊ณ ์ค๋ ๋ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ์์ค ์ฝ๋์ ๋์ผํ ํจํค์ง ๊ตฌ์กฐ์ ์ํด์๋ ์ด์ ๊ฐ ์ ๊ทผ์ ์ด์์ ๋์๋ฐฉ์์ ์๋ค.
- ๋ชจ๋ ์์คํ ์ ๋์ ์ ๋ํด์๋ ๋ณด์์ ์ผ๋ก ์ง์ผ๋ณด์.
- ์บก์ํ๊ฐ ์ผ๋ง๋ ์ ๋์ด ์๋์ง
- ๋ ธ์ถ๋๋ 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 ํ๋๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ ๋ถ๋ณ์ธ์ง ํ์ธํ์.
- ์๋ฐ๋ด ์์ดํ 15
- Effective Java 3/E - Joshua Bloch


