[TIL] ์์
๐ OOP์ 4๋ ํน์ง
๐๐ป ์์
- ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ
- ๋ ํด๋์ค๋ฅผ ๋ถ๋ชจ์ ์์์ผ๋ก ๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๊ฒ์ผ๋ก ์์์ ๋ถ๋ชจ์ ๋ชจ๋ ๋ฉค๋ฒ๋ฅผ ์์๋ฐ์
- ์์ ํด๋์ค์ ๋ฉค๋ฒ์ธ ํ๋, ๋ฉ์๋, ์ด๋ํด๋์ค๋ฅผ ํ์ ํด๋์ค๋ก ๋ณด๋
๐ก ์์์ ์ฌ์ฉํ๋ ์ด์ ?
- ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ ํ์ฌ ์ ์ ์์ ์ฝ๋๋ก ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ ์ ์์
- ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ ๊ฐ๋ฅ
- ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๋ชจ์์ผ๋ก ํํ๋ ์ ์๋ค๋ ๋คํ์ฑ ํํ ๊ฐ๋ฅ
๐ ์์ ์ฌ์ฉ : extends
ํด๋์ค๋ช
extends ์์ํด๋์ค๋ช
- ์์ ํด๋์ค์ ํ๋์ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค๊ฐ ์์ → ๊ณตํต๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ฐ๊ฐ ์ ์ธํ์ง ์์๋ ๋จ
- ํ์ ํด๋์ค ํ๋ = ์์ ํด๋์ค ํ๋ + ํ์ ํด๋์ค์ ์๋ก์ด ํ๋
- ํ์ ํด๋์ค ๋ฉ์๋ = ์์ ํด๋์ค ๋ฉ์๋ + ํ์ ํด๋์ค ์๋ก์ด ๋ฉ์๋
- ์๋ฐ๋ ๋จ์ผ ์์๋ง ํ์ฉ (but ์ธํฐํ์ด์ค๋ฅผ ํตํ ๋ค์ค ์์๊ณผ ๋น์ทํ ํจ๊ณผ ๊ฐ๋ฅ )
→ ์ฆ, extends ๋ค์๋ ํ๋์ ๋ถ๋ชจ ํด๋์ค๋ง ์์ผ ํจ ! class ๊ฐ์์ง extends ์๋ฌผ, ๋๋ฌผ {} ์ด ๋ถ๊ฐ !!
๐๐ป ํฌํจ ๊ด๊ณ
- ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉ ํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋์ค์ ๋ฉค๋ฒ๋ก ๋ค๋ฅธ ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธ
๐ก ์์์ธ์ง ํฌํจ์ธ์ง ํ๋ณ ๊ธฐ์ค
: ํด๋์ค ๊ฐ ๊ด๊ณ๊ฐ '~์ ~์ด๋ค (is-a)' ๊ด๊ณ์ธ์ง '~์ ~์ ๊ฐ์ง๊ณ ์๋ค (has-a)' ๊ด๊ณ์ธ์ง๋ฅผ ํ๋ณ !
→ ๋ถ๋ชจ ํด๋์ค๊ฐ A์ด๊ณ ์์ ํด๋์ค๊ฐ B์ผ ๋,
'A๋ B์ด๋ค'๊ฐ ์ฑ๋ฆฝํ๋ฉด ์์ !!!!!!!! vs 'A๋ B๋ฅผ ๊ฐ์ง๊ณ ์๋ค'๊ฐ ์ฑ๋ฆฝํ๋ฉด ํฌํจ !!!!!!!!
๐๐ป ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
- ๋ฉ์๋ ์ฌ์ ์๋ผ๊ณ ๋ ํจ : ๋ฎ์ด ์์ฐ๊ธฐ
- ์์ ํด๋์ค๊ฐ ํ์์ ๋ฐ๋ผ ์์๋ ๋ถ๋ชจ์ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๋ ๊ฒ
- ๋์ผํ ์์น์ ๋์ผํ ํ์ผ์ ์ ์ฅํ ๋ ๋ฎ์ด์ฐ๋ ๊ฒ๊ณผ ๋น์ทํ ๊ฐ๋
- ๋ฉ์๋์ ํค๋๋ ๊ทธ๋๋ก ๋๊ณ ๋ฐ๋๋ง ๊ต์ฒด
๐ก ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ 3๊ฐ์ง ์กฐ๊ฑด
1๏ธโฃ ๋ฉ์๋์ ์ ์ธ๋ถ(๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ๋ณ์, ๋ฐํํ์ )์ด ์์ ํด๋์ค์ ์ผ์น
2๏ธโฃ ์ ๊ทผ ์ ์ด์๊ฐ ์์ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๋๊ฑฐ๋ ๊ฐ์์ผ ํจ
(๋ถ๋ชจ๊ฐ protected์ด๋ฉด ์์์ protected๊ฑฐ๋ public)
3๏ธโฃ ์์ธ๋ ์์ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๋ง์ด ์ ์ธํ ์ ์์
๐ก ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ vs ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
- ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ : ๊ฐ์ ํด๋์ค ์์์ ์ด๋ฏธ ์ ์๋ ๋ฉ์๋ ๋ณ๊ฒฝ ํ ์ฌ์ฉ
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ : ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ ํด๋์ค์์ ๋ถ๋ชจ์ ๋ฉ์๋ ๋ณ๊ฒฝ ํ ์ฌ์ฉ
๐๐ป super ํค์๋์ super()
- ์์ ํด๋์ค์ ์กด์ฌ๊ฐ ํ์ํ๊ณ ์์ ๊ด๊ณ๋ฅผ ์ ์ ๋ก ํจ
โช๏ธ super : ์์ ํด๋์ค์ ๊ฐ์ฒด
- ์์ ํด๋์ค ๋ฉค๋ฒ์ ์์ ์ ๋ฉค๋ฒ๋ฅผ ๊ตฌ๋ณํ๋๋ฐ ์ฌ์ฉ
- super.๋ณ์ ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ๋ถ๋ฌ์ด
โช๏ธ super() : ์์ ํด๋์ค์ ์์ฑ์
- ์์ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ๋๋ฐ ์ฌ์ฉ
- ์์ฑ์ ์์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ ๋ฐ๋์ ์ฒซ ์ค์ ์์ฑ
๐๐ป Object ํด๋์ค
- ์๋ฐ์ ํด๋์ค ์์์์ ์ต์์์ ์์นํ ์์ ํด๋์ค
- ์๋ฐ์ ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค๋ฅผ ์์๋ฐ์
- ๋ค๋ฅธ ํด๋์ค๋ก๋ถํฐ ์๋ฌด ์์์ ๋ฐ์ง ์์๋ค๋ฉด ์๋์ผ๋ก ์ปดํ์ผ๋ฌ๊ฐ Object ํด๋์ค๋ฅผ ์์๋ฐ๋๋ก ํจ
๐Object ํด๋์ค์ ๋ํ์ ์ธ ๋ฉ์๋
1) toString() : ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฌธ์์ด๋ก ์ถ๋ ฅ (String)
2) equals(Object obj) : ์คํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น๊ต (boolean)
3) hashCode() : ๊ฐ์ฒด์ ์์น์ ๋ณด๋ฅผ Hashtable ๋๋ HashMap์์ ๋์ผ ๊ฐ์ฒด ํ๋จ (int)
4) wait() : ํ์ฌ ์ฐ๋ ๋ ์ผ์ ์ ์ง (void)
5) notify() : ์ผ์ ์ ์งํ ์ฐ๋ ๋ ์ฌ๋์ (void)