public protected private
public -> ์ด๋์๋ ํด๋์ค ๋ฉค๋ฒ๋ ํจ์์ ์ ๊ทผ๊ฐ๋ฅ
protected -> ์์๋ฐ์ ์์๊ณผ ๋ณธ๋ ํด๋์ค์์ ํด๋น ํด๋์ค ๋ฉค๋ฒ๋ ํจ์์ ์ ๊ทผ๊ฐ๋ฅ
private -> ๋ณธ๋ ํด๋์ค ์์ฒด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
์ ํด๋์ค์ ๋ฌด์จ ๋ฉค๋ฒ๋ ํจ์์๋์ง ๋ณด๋๋ฐ ์
๋ด์ฅ๊ธฐ๊ด๊น์ง ๋ค๋ณด์ฌ => ์ด๋ฐ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ (์ ๋ณด์๋)
Actorํด๋์ค๋ฉด getName()ย move(dirX, dirY), getPosition(), attack(targetActor) ๋ง ํธ์ถํ๊ณ ์ถ์๋ฐ
์ ๋ด์ฅ (x, y, actorId, hp, maxHp, currentActionPoint, maxAP, actorJobType) ๊น์ง ๋ค๋ณด์ฌ?
์ด๋ฐ๊ฑธ ๋ง๊ณ ์ถ์ด์ ์ด๋ค๊ณ ๋ณด๋ฉด๋จ
๋ณด์๊ฐ๋ ํ๊ณ ๋ ์ข ๋ค๋ฆ
ํ์ ํด์ ๋จ์ ์ฝ๋ ๋ณด๋๋ฐ ๋ด์ฅ ๊น์ง ๋ค ๋ด์ผ ํ๋ค๊ณ ์๊ฐํด๋ด๋ผ ์ผ๋ง๋ ํผ๊ณคํ๋
๋ถ๋ชจ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ง ๋ณด๊ณ ์ ์ฌ๊ธฐ์ getName, move๋ง ์ฐ๋ฉด ๋๊ฒ ๋ค ํ๊ณ ์ฐ๋๊ฒ ํธํ์ง (API)์ฒ๋ผ
๋ค๋ฅธ ๋๋ฃ๋ ์๊ธฐ๊ฐ ์์ด getName, move๋ง ์ฐ๊ณ , ๋ง์ฝ ์๋์๊ฐ๋ค?
๊ทธ๋ผ ์๋ณธ ํด๋์ค๋ ์ธํฐํ์ด์ค ๋ง๋ ๋์ ๋น๋ ํ๋ฉด ๋๋๊ฑฐ์
๊ทธ๋ ๊ฒ ๊ฐ์ ์์ ๋ถ์ ๋ํด์ ๋ชฐ๋ผ๋ ๋๋ ๋ถ๋ถ์ ์จ๊ฒจ์ ๊ฐ๋ฐ์์ ๋จธ๋ฆฌ๋ฅผ ๋ณต์กํ์ง ์๊ฒ ๋ง๋ค๊ณ
๊ทธ๊ฑธ๋ก ์์ฐ์ฑ์ ๋๋ฆฌ๋ ๊ฐ๋ ์
ํ๊ต์์ ํ๋ก์ ํธ ์์ด ์ฑ ์ผ๋ก๋ง ๊ณต๋ถํ๋ฉด ํท๊ฐ๋ฆผ
๊ฒฐ๊ตญ์ ๊ฐ์ฒด์งํฅ์ ํด๋์ค๋ ์ธ์คํด์ค๋ ํ๋ก๊ทธ๋๋ฐ์ ๋์์ ๊ฐ์ฒดํ ํ๋๊ฑฐ๊ณ
๊ฐ์ฒดํ๋ฅผ ์ฝ๊ฒ ๋งํ๋ฉด "๋ฉ์ด๋ฆฌ"๋ก ๋ง๋๋๊ฑฐ์
์ํ์์ด๋ฉด ์ํ์, ์ํ๊ณ ๊ฐ์ด๋ฉด ์ํ๊ณ ๊ฐ
์๊ณ ๋ฉด ์๊ณ , ์ ๊ธ์ด๋ฉด ์ ๊ธ, ์ถ๊ธ์ด๋ฉด ์ถ๊ธ
์ด๋ฐ ํฐ๋จ์๋ก ๋ก์ง์ ์ดํด๊ฐ๋ฅํ๊ฒ ํธ์์ฑ ํจ์น๋ฅผ ํ๋๊ฑฐ์
c์ธ์ด ๋ฐฐ์ธ๋์ฒ๋ผ (๋น ๊ฐ์ฒด์งํฅ ์ธ์ด์ฒ๋ผ)
์
๊ธ ํ๋๋ง์ ๋ ๋ฌด์จ ๋ฉ๋ชจ๋ฆฌ ์ขํ์ ๋ช๋ฒ์งธ ๊ตฌ๊ฐ์ ๊ฐ์ + 10ํ๋ค ์ด๊ฑธ ๋ค ์ฝ์ด๋ณด๊ณ ์ดํดํด์ผ๋๋ฉด
(๊ฒฐ๊ตญ์ ์ํ์์ด ์ํ ๊ณ์ข์ ์ ๊ธ 10์ ํ๊ฑฐ)
์์ฐ์ฑ์ ์์งํ๋ฝํ๋ค๊ณ ๋ณผ์์๋ค.
public protected private๋ ๊ทธ๋ฐ ์ฐจ์์ด๋ผ๊ณ ๋ณด๋ฉด๋จ
public ์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์์ผ ํ๊ณ ๋ค๋ฅธํด๋์ค์์ ํธ์ถํ ๋ด์ฉ์ด๊ณ
protected๋ ๋ค๋ฅธ ๊ฐ๋ฐ์ํ ํ์ฅํ๊ฑฐ๋ ์์๋ฐ์์ ์ธ๋ ๋ ธ์ถํด์ค์ผ ํ ํจ์๋ ๋ณ์์
private๋ ์ด ํด๋์ค ๋ด๋ถ์์๋ง ์จ์ ๋จ๋ค์ ๋ชฐ๋ผ๋ ๋๋ ๋ฐ, ๊ธฐ๋ฅ๊ตฌํ์ ์์ฃผ์ด๋ค๊ฑฐ๋ ํด์ ๋ฉ์ด๋ฆฌ๋ง๋ค๊ณ ์ถ์๋ ์ฐ๋๊ฑฐ์(ํจ์์๊ฒฝ์ฐ), ์๋๋ฉด ์ฌ๊ธฐ์๋ง ์จ์ ์๋ํ๊ณ ์ถ๊ณ ์์์ด๋์ ์๊ด์๋ ๊ฒฝ์ฐ (๋ณ์์ ๊ฒฝ์ฐ)
get/set property๋ ๊ธฐ๊ณ์ ์ผ๋ก ์ฐ์ง๋ง๊ณ
์ด๋ ๊ฒ ์๊ฐํด๋ผ
ํด๋น ๋ณ์๋ฅผ getํ๊ฑฐ๋ set ํ๊ธฐ๋ง ํด๋ ๋ค๋ฅธ ๋์์ด ๋ฒ์ด์ง๊ฒ ํ ๋งํผ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๊ฐ๋ฅ์ฑ์ด ์์๊ฑฐ ๊ฐ๋? ( getํด์ฌ๋ ๋ก๊ทธ๋ฅผ ์ฐ๋๋ค๋์ง ํ๋์์ ์ฌ์ด๋ ์ดํํธ๋ฅผ ๋ฒ์ด์ง๊ฒ ํ๊ณ ์ถ๋?)ย
๊ทธ๋ผ ๊ทธ๋ property๋ฅผ ์ฐ๋ฉด ๋จ
property๋ฅผ ์์ฐ๋ฉด ์ด๋ป๊ฒ ๋๋?
ํด๋น ๋ณ์๊ฐ accountRemain (์๊ณ ) ๋ผ๊ณ ์ณค์๋
property๋ฅผ ์ด๊ฒฝ์ฐ์ธ๋ฐ
์๊ณ ๋ฅผ ์ฝ์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ฒ๊ทธ๊ฐ ์์ฌ๋์ ๋ก๊ทธ๋ฅผ ์ฐ์ด๋ณด๊ณ ์ถ๋ค
๊ทธ๋ผ accountRemain { set { reteurn value; } } ์ด๊ฑฐ๋ฅผ
accountRemain { set {ย log(value); return value; }}ย
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋จํจ
๋ง์ฝ property๋ฅผ ์์ผ๋ค?
ํ๋ก์ ํธ์์์ Ctrl + Shift + F ๊ฐ์๊ฑฐ ๋๋ฌ์ ๋ชจ๋ ์ฐพ์ ๋ฐ๊พธ๊ธฐ ํด์ผ๋จ
์ฌ์ง์ด ๊ฐ ์ฝ์ด์ค๋ ๊ฒฝ์ฐ๋ง ๋์ผ๋ก ํ์ธํด์ ํด์ผ๋จ ใ ใ
banker2.accountRemain += 2;
์ด๊ฑธ
log(banker2.accountRemain);
banker2.accountRemain += 2;
์ด๋ ๊ฒ 300๊ฐ๋ฅผ ํด์ผ๋จ, ์๋ฌ๋๊ธฐ ๋ฑ ์ข๊ณ
์๊ฐ์ ์กด๋ ์ก์๋จน์ง
๋ญ ๋ค๋ฅธ ์ฐ๋ ๋ฐฉ๋ฒ์ด ์๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ, ๊ฒฐ๊ตญ์ ์ฌ์ด๋์ดํํธ(๋ฆฌํด๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ์๋์ค๊ณ ๊ฐ์ด ๋ฐ๋๊ฑฐ๋ ๋ค๋ฅธ ๋์ํ๋๊ฑฐ) ๋ด๋ ์ฉ๋์
์ฝ๋์์ ํ์๋ผ๊ธฐ๋ณด๋จ, ์์ฐ์ฑ์ ์ํ ๊ฐ๋ฐ์์ ์ธ์ด๊ฐ๋ฐ์์ ๋ชธ๋คํ๊ธฐ ์คํฌ๊ฐ์๊ฑฐ๋ผ๊ณ ๋ณด๋ฉด๋จ
์ฌ์ด๋์ดํํธ๊ฐ ๋ง์์ง๋ฉด? ๋ก์ง ์๋ฌ๋๊ธฐ ๋ฑ ์ข์ง, ํ์ง๋ง ๋น์ฅ ์ดํ ๊ฑธ๋ฆด๊ฑฐ 1๋ถ์์ ๋๋๋ฉด ์์ธ์ฌ๋ ์๋?
๊ธฐ์ ๋ถ์ฑ ์์ฌ๋ ์ฐ๋๊ฑฐ์ง.
์ธ์ด ์ฑ ์ ์ธ๋ฐ์์ด ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ง์
๊ฐ์ฒด => ๋ฉ์ด๋ฆฌ
์ ๋ณด์๋ => ์ํ์ ๋ฌดํ๋๋ฐ ์ํ์ ๋ด์ฅ์ ๊ฐ์์๋์ง๋ ๋ชฐ๋ผ๋ ๋๋๊น ์จ๊ธฐ๊ธฐ
๊ฐ๋จํ๊ฑฐ์
ใ ใฑ
์ด๊ธ์ ๋๋ก ์ดํดํ๊ณ ๋์ด๊ฐ๋ฉด๋๋๋ฐ, ๋ณด์์ ์๋ฏธ์ ์์ญ๊น์ง ํ๋ ํด์ํด๊ฐ๋ฉด์ ์๊ธฐ๋ง์ด ๋ง๋ค๊ณ ์ฐ๊ธฐ๋ ํ๋ฑ์ด ์ญ๊ฒน๊ฒ ๋ฌผํ๋ฆฌ๋์ค