๊ฐ์ฒด์งํฅ์ธ์ด์ ํน์ง
์ถ์ํ(Abstraction)
๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ๋ค์ ๊ณตํต์ ์ธ ํน์ง์ ํ์
ํด์ ์ด๋ฅผ ํ๋์ ๊ฐ๋
(์งํฉ)์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ
์ถ์ํ(abstraction)๋ผ๋ ๊ฒ์ ๋ฏธ์ ์ '์ถ์ํ'๋ผ๋ ๊ฒ๊ณผ ๋น์ทํ ๊ฐ๋
์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
๋ฏธ์ ์์ ์ถ์ํ๋ผ๋ ๊ฒ์ ๊ทธ ํต์ฌ์์ง๋ง ์ด๋ฆฌ๊ณ ๋๋จธ์ง๋ ์๋ตํ๊ฑฐ๋ ๋ณํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ ๋ปํ๋ ๊ฒ์ด๋ผ๋ ์ ์ ์๊ณ ๊ณ์๊ฒ ์ฃ .
๋ง์ฐฌ๊ฐ์ง๋ก ํด๋์ค๋ฅผ ๊ตฌํํจ์ ์์ด ๋ชจ๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์๋ ์์ต๋๋ค.
'ํ์ฌ์ ๊ด๋ฆฌ'๋ฅผ ์ํ '์ฌ๋' ํด๋์ค์์๋ '์ฑ๋ณ'์ด๋ผ๋ ์์ฑ์ด ๋ฐ๋์ ํ์ํ์ง๋ง '๋จ์๋ชฉ์ํ ํ์ ๊ด๋ฆฌ'๋ฅผ ์ํ '์ฌ๋' ํด๋์ค์์๋
๊ตณ์ด ์ฑ๋ณ์ด๋ผ๋ ์์ฑ์ ํ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ด์ฐจํผ ๋ชจ๋ ๊ตฌ์ฑ์์ด '๋จ์'์ผํ
๋๊น์.
์ด์ฒ๋ผ ๊ตณ์ด ๊ตฌํํ ํ์์๋ ๋ถ๋ถ์ ๊ณผ๊ฐํ ์๋ตํ์ฌ ํ์ํ ๋ถ๋ถ๋ง์ ๋ํ๋ด๋ ๊ฒ์ ์ถ์ํ๋ผ๊ณ ํฉ๋๋ค.
์บก์ํ(Encapsulation)
์ ๋ณด ์๋ (information hiding): ํ์๊ฐ ์๋ ์ ๋ณด๋ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ํํ๋ ๊ฒ
๋์ ์์ง๋, ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํ์ฌ ์ ์ฐํจ๊ณผ ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ
์บก์ํ(encapsulation)๋ผ๋ ๊ฒ์ ์๋ํ(hidden)๋ผ๋ ๊ฒ๊ณผ ๋น์ทํ์ง๋ง ์กฐ๊ธ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์บก์์ด๋ผ๋ ๊ฒ์ ์ฝ๊ตญ์์ ํ๋ ์์ฝ ์ค์ '์บก์'์ ๋ค์ด๊ฐ ์๋ ์ฝ์ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ์ฝ์ ๋ณต์ฉํ ๋ ๊ทธ๋ฅ ์บก์์ฑ๋ก ์ผํฌ ๋ฟ ๊ทธ ์์ ๋ค์ด๊ฐ ์๋ ์๊ฐฑ์ด ์ซ์๋ฅผ ์ธ๊ฑฐ๋ ๊ตฌ๋ถํด์ ๋ณต์ฉํ์ง ์์ต๋๋ค.
๊ทธ๋ฅ ์บก์์ ๊ป๋ฐ๊ธฐ๋ง ๋ณด๊ณ ๋ฌด์จ ์ฝ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์ฌ์ฉํ ๋ฟ์
๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ค ํด๋์ค๋ฅผ ์ฌ์ฉํจ์ ์์ด ๊ทธ ํด๋์ค๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋์ ๊ธฐ๋ฅ๋ง์ ์๊ณ ๊ทธ ๊ธฐ๋ฅ๋ง์ ์ฌ์ฉํ ๋ฟ, ์ค์ ๋ก ๊ทธ ๋ฉ์๋๊ฐ ์ด๋ป๊ฒ ์์ง์ด๋์ง๋ ๊ตณ์ด ์ ํ์๊ฐ ์์ต๋๋ค.
System.out.println()์ด๋ผ๋ ๋ฉ์๋๋ฅผ ์ฐ๋ฉด ๊ดํธ ์์ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋ค๋ ์ฌ์ค๋ง์ ์๋ฉด ๋์ง ๊ทธ๊ฒ์ด ์ด๋ค ์๋ฆฌ๋ก ๋์ค๋์ง๋ ๊ตณ์ด ์ ํ์๊ฐ ์๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
์๋ํ๋ผ๋ ๊ฒ์ ์ด ์บก์ํ๋๋ฌธ์ ๋์ค๋ ๊ฒ์ธ๋ฐ ํด๋์ค์ ์์ฑ๋ค์ private์ผ๋ก ๋ง๋ค์ด
ํด๋์ค ๋ฐ์์ ํจ๋ถ๋ก ๊ฑด๋๋ฆฌ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํด๋์ค๋ฅผ ์ฌ์ฉํจ์ ์์ด ์์ฑ๋ค์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ค๋ฅ๋ฑ์ ์น๋ช
์ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ค์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๊ณ
๋์ '๊ฒํฐ(getter)'์ '์ธํฐ(setter)'๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผ๊ฐ๋ฅ์ผ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด๊ธฐ์๋ ๋ฒ๊ฑฐ๋ก์ ๋ณด์ด์ง๋ง ๋ค์ด์์๋ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฒ์ ๋ง์ ์ ์์ ๋ฟ ์๋๋ผ '๊ฐ์ฒด ์งํฅ'์ด๋ผ๋ ์๋ฏธ์ ๋ณด๋ค ๊ฐ๊น๊ฒ ์ ๊ทผํ๊ฒ ํ ์ ์์ต๋๋ค.
์์(Inheritance)
์ฌ๋ฌ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง ๊ณตํต๋ ํน์ฑ์ ๋ถ๊ฐ์์ผ ํ๋์ ๊ฐ๋
์ด๋ ๋ฒ์น์ผ๋ก ์ฑ๋ฆฝ์ํค๋ ๊ณผ์
์์์ด๋ผ๋ ๊ฒ์ ๋ง๊ทธ๋๋ก ๋ถ๋ชจ์ ์ ์ฐ์ ์์์ด ์ด์ด๋ฐ๋ฏ์ด ๋ถ๋ชจํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ํด๋์ค๊ฐ ์ด์ด๋ฐ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์์ํด๋์ค๋ extends๋ผ๋ ํค์๋๋ฅผ ํตํด ์์๋ฐ์ ๋ถ๋ชจํด๋์ค์ ๋ชจ๋ ๋ฉค๋ฒ๋ณ์์ ๋ฉ์๋๋ฅผ ์น๊ณํ์ฌ ์์ ์ ๊ฒ์ฒ๋ผ ์ธ ์ ์์ต๋๋ค.
๋จ, ์ด ๋ ๋ถ๋ชจํด๋์ค์์ private์ผ๋ก ์ ์ธํ๋ค๋ฉด ๊ฐ์ง๊ณ ๋ ์์ง๋ง ์ฌ์ฉ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์๋ฐ๋ ๋จ์ผ์์๋ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ํ ํด๋์ค๊ฐ ์ฌ๋ฌํด๋์ค๋ก๋ถํฐ ์์์ ๋ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ
์ด๋ฌํ ๋ค์ค์์์ ์ฅ์ ์ ๊ตฌํํ๊ธฐ ์ํด '์ธํฐํ์ด์ค(interface)'๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋คํ์ฑ(Polymorphism)
์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๋ ๊ฐ์์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฅ๋ ฅ
์ค๋ฒ๋ผ์ด๋ฉ(Overriding), ์ค๋ฒ๋ก๋ฉ(Overloading)