์๋ฐ์ ์ ๊ทผ ์ ์ด์ default / public(package) / private / protected / static / final
โถ default(package)
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผ ์ ์ด์๋ก ์๋ต์ด ๊ฐ๋ฅํ๋ค. => ์ ๊ทผ ์ ์ด์๋ฅผ ์๋ตํ๋ฉด default๋ก ์ค์ ๋๋ค.
default๋ ๊ฐ์ ํจํค์ง ๋ด์ ์๋ class๋ผ๋ฉด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.


1๋ฒ ํจํค์ง์ 1๋ฒ ํด๋์ค๋ฅผ ์ ์ํ์๋ค.
2๋ฒ ํจํค์ง๋ฅผ ๋ง๋ค๊ณ 2๋ฒ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ 2๋ฒ ํด๋์ค์ 1๋ฒ ํด๋์ค๋ฅผ ๋ถ๋ฌ์ค๊ธฐ(import)๋ฅผ ํ์ ๋, ์ค๋ฅ ๋ฐ์
=> ๊ฐ์ ํจํค์ง ์์์๋ง ๋ถ๋ฌ์ค๊ธฐ ๊ฐ๋ฅ
โถ public
์ด๋ฆ์ฒ๋ผ ์ด๋์๋ ๋ถ๋ฌ์ฌ ์ ์๋ค.
๋ค๋ฅธ ํจํค์ง ์์ ๋ค๋ฅธ ํด๋์ค์์๋ ๋ถ๋ฌ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.

testPackage1 ํจํค์ง์ ์๋ TestClass2 ํด๋์ค์ ์ ๊ทผ ์ ์ด์๋ฅผ public์ผ๋ก ๋ณ๊ฒฝํด์คฌ๋ค.

testPackage2 ํจํค์ง์ TestClass2 ํด๋์ค์์ ๋ค๋ฅธ ํจํค์ง์ ์๋ TestClass1์ ๋ถ๋ฌ์๋ ์ ์๋๋๋ค.
โถ private
์์ ์ ์ ์ธํ ๋ค๋ฅธ ํด๋์ค์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
์ค์ง ์์ ์ ํด๋์ค ์์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.


testPackage1 ํจํค์ง์ TestClass1 ํด๋์ค์ ํ๋ ๊ฐ์ ์์ฑํ๋ค. (public int, private int 1๊ฐ์ฉ)
TestClass1์ public์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํจํค์ง(testPackage2)์์ ๋ค๋ฅธ ํด๋์ค(testClass2)๋ก import ํ ์ ์์์ง๋ง, ํ๋ ๊ฐ์ publicNum ๋ฐ์ ์ ๊ทผํ์ง ๋ชปํ๋ค.
โท private ์ ๊ทผ์๋ฅผ ์ฐ๋ ์ด์ ?
ํด๋์ค๋ ์ถ์์ ์ธ ๊ฐ๋ ์ ์ ๋ฆฌํด ๋๊ณ ํด๋น ํด๋์ค๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค์์ ๊ตฌ์ฒดํ์์ผ์ ์ฌ์ฉํ๋ค. ex). ์์ ํด๋์ค : ๋ํ, ๋๋ฌผ... / ํ์ ํด๋์ค : ์ฌ๊ฐํ, ์ผ๊ฐํ... ๊ฐ์์ง, ๊ณ ์์ด...
์ด๋, ๊ฐ์ฅ ํฐ ํ์ธ ์์ ํด๋์ค์ ํ๋ ๊ฐ์ ์ง์ ์ ๊ทผํ๋ฉด ํ์ ํด๋์ค๋ค์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์๋ ์๊ณ ์ฌ์ฉ์์ ์๋ชป๋ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์๋ ์๋ค.
ex): ์๋ชป๋ ๊ฐ ๋์ : 1~100๊น์ง๋ง ์ ์ฅํด์ผ ํ๋ ๋ณ์์ ์ฌ์ฉ์๊ฐ 200์ ์ ์ฅ
์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ ๊ฐ์ private๋ก ์ ์ํ๊ณ getter / setter ํจ์๋ฅผ ๋ง๋ค์ด ํ๋ ๊ฐ์ ์ ๊ทผํ๋ค.
โถ protected
๊ฐ์ ํจํค์ง ํน์ ์์ํ ํ์(์์, ์๋ธ) ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ / ์์๋ฐ์ง ์์ ํด๋์ค๋ ๋ค๋ฅธ ํจํค์ง์์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ


testPackage1 ํจํค์ง ์์ ์์ ํด๋์ค์ธ SuperClass์์ protected์ private ํ๋ ๊ฐ์ ๊ฐ๊ฐ ์์ฑํ์ ๋,
testPackage2 ํจํค์ง์์ ํ์ ํด๋์ค์ธ SubClass์์๋ protected๋ก ์ ์๋ ํ๋ ๊ฐ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฑธ ํ์ธํ ์ ์๋ค.
โถ static
โท๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌ
static์ผ๋ก ์ ์๋ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ฉด์ ์ฌ์ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ฒ ๋๋ค.
ํ์ง๋ง, ์์ ๊ฐ์ฒ๋ผ ๋ณํจ์๋ ๊ฐ์ ๊ฒฝ์ฐ ๋ฐ๋ณตํด์ ์์ฑํ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ญ๋นํ๋ ๊ผด์ด ๋ ์ ์๋ค.
์ด๋ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฒ๋ง ์ ์ฅ์ํจ ํ ํ์ํ ๋๋ง๋ค ๋ถ๋ฌ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.

ex)
A ํด๋์ค์๋ ๋ฐ์ดํฐ1, ๋ฐ์ดํฐ 2, ๋ฐ์ดํฐ 3 ์ด ์๋ค๊ณ ๊ฐ์
๋ฐ์ดํฐ 1์ ๊ฐ์ด ์ ๋ ๋ณํ์ง ์๋๋ค๊ณ ํ์ ๋, Aํด๋์ค๋ฅผ ๋ฐ๋ณตํด์ ์์ฑํ๊ฒ ๋ถ๋ฌ์ค๊ฒ ๋๋ฉด ๋ณํ์ง ์์ ๊ฐ์ธ ๋ฐ์ดํฐ 1์ ๋ฐ๋ณตํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ฒ ๋์ด ๋นํจ์จ์ ์ด๋ค.
๋ณํ์ง ์์ ๋ฐ์ดํฐ ๊ฐ(์๋ฅผ ๋ค์ด ์์) ์ static์ผ๋ก ์ ์ํ์ฌ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ -> ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ์ฆ๊ฐ
โทstatic๋ผ๋ฆฌ๋ง ํธํ
static์ผ๋ก ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋์๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋ค.
static์ผ๋ก ์ ์๋ ๋ฐ์ดํฐ๋ ๊ฐ์ด static์ผ๋ก ์ ์๋ ํด๋์ค์์๋ง ์ฌ์ฉํ ์ ์๋ค.
๋ํ์ ์ธ static ํด๋์ค๋ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ main ํด๋์ค๊ฐ ์๋ค.

static์ผ๋ก ์ ์๋ main ํด๋์ค์์ static์ผ๋ก ์ ์๋ MAX_NUM ๋ฐ์ดํฐ ๊ฐ์ด ์ ์ฌ์ฉ๋๋ค.

static์ด ์๋ ํด๋์ค ์์์ static์ผ๋ก ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ ๋์ ๋ชจ์ต์ด๋ค.
ํ๋ก๊ทธ๋จ ์์ ์ ์๋ ๋ฌธ๋ฒ์ ์๋ฌ๊ฐ ์์ด์ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ํ๋์ง ์์ง๋ง, ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์์ฒ๋ผ ์๋ฌ๊ฐ ๋๋ฉฐ ์คํ๋์ง ์๋๋ค.
MAX_NUM์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ๋๋ static ๋ฐ์ดํฐ์ธ๋ฐ static์ด ์๋ ํด๋์ค์์ ๋ถ๋ฌ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ฒ๋ผ static ๋ฐ์ดํฐ๋ static ํด๋์ค์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ํน์ง์ด ์๋ค.
โถ final
์์๋ฅผ ์ ์ฅํ๋ ์ ๊ทผ ์ ์ด์
final์ ๊ฒฝ์ฐ๋ static์์ ์ ๊น ๋์๋๋ฐ ์์(๋ณํ์ง ์๋ ๊ฐ)๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ค.

final๋ก ์ ์๋ MAX_NUM์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋์จ๋ค.
๋ณ๊ฒฝ๋์ด์๋ ์ ๋๋ ๊ฐ์ด ๊ฒฝ์ฐ, ์ฌ์ฉ์ ํน์ ๊ฐ๋ฐ์๊ฐ ์ค์๋ก๋ผ๋ ๋ณ๊ฒฝํ ์ ์๋๋ก final๋ก ์ ์ํ๋ค.
โท ํ์ ํด๋์ค์์ ์๋ก ์์ฑ ๊ฐ๋ฅ
final๋ก ์ ์๋ ๊ฐ์ ํ์ ํด๋์ค์์ ์๋ก ์์ฑ ๊ฐ๋ฅํ๋ค. -> ๊ฐ์ ์ด๋ฆ, ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
ํ์ ํด๋์ค๋ ์์ ํด๋์ค์ ์ข ์๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ํด๋์ค์ ๋ฐ์ดํฐ ๊ฐ์ ์ง์ ๊ฐ๋ฅ, ํ์ ํด๋์ค์์ MAX_NUM ์์ ๊ฐ ์๋ก ์์ฑ ๊ฐ๋ฅ


ํ์ ํด๋์ค์์ ์ ์ฌ์ง๊ณผ ๊ฐ์ด ์์ ๊ฐ์ ์ฌ์ ์ ํ ํ getter ํจ์๋ฅผ ์ ์ํด ๋ฆฌํด ๊ฐ์ ์๋ก ์ ์๋ ์์ ๊ฐ์ผ๋ก ํด์ค๋ค.

ํ ์คํธํด๋ณด๋ฉด ํ์ ํด๋์ค์ ์์ ๊ฐ์ด ์ ๋์ค๋ ๊ฑธ ํ์ธํ ์ ์๋ค.