๐ ํด๋์ค์ ์ค๋ธ์ ํธ
๋ถ์ด๋นต ํ(template) : ํด๋์ค
object: ํฅ์ ๋ฃ์ผ๋ฉด ํฅ๋ถ์ด๋นต, ํฌ๋ฆผ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ํฌ๋ฆผ ๋ถ์ด๋นต!
โ ํ์ด์ฌ์์์ ํด๋์ค์ ๊ฐ์ฒด ๊ฐ๋ ๊ณผ ๊ฐ๋ค. ๋๋ค ๊ฐ์ฒด์งํฅ์ธ์ด!
๐์๋ฐ์คํธ๋ฆฝํธ์์ ํด๋์ค ์ฌ์ฉํ๋๋ฒ
ํ์ด์ฌ๊ณผ ๋ค๋ฅด๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ์์๋, ํด๋์ค๋ฅผ ์ ์ธํ๊ธฐ ์ํด 'constructor'๊ฐ ํ์ํ๋ค. ํ์ด์ฌ์์๋ def ์ self๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ 'constructor/method์ this'๋ฅผ ์ด์ฉํ๋ค. ๊ตฌ์กฐ๋ ์ ์ฌํ๋ค.
๋ํ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ๋๋ ์ฐจ์ด๊ฐ ์๋ค.
ํ์ด์ฌ์์๋ ๋ณ๋ค๋ฅธ ๋ณ๋ ์ฝ๋ ์์ด ๊ทธ๋ฅ ์์ฑํ๋ฉด ๋๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ const์ new๋ฅผ ์จ์ค๋ค.
๐ Getter & Setter
incapsulation => private ๋ง๋๋ ๊ฒ
ํด๋์ค์ ์ฌ์ฉ์๊ฐ ๋ถ์จํ ํํ๋ก ๋ฐ์ดํฐ ๊ฐ์ ์ ๋ ฅํ์ ๋, ๊ทธ๊ฒ์ ๋ํด ๋ฐฉ์ด์ ์ธ ํ๋๋ก ๋ณด์ํ ์ ์๊ฒ ํ๋ ๊ฒ์ด ๋ฐ๋ก Getter & Setter.
get age() {
return this._age;
}
set age(value) {
this._ age = value <0? 0 : value;
}
๐์๋ฐ์คํธ๋ฆฝํธ์์ ํด๋์ค ์์
๋ง์ฝ ๋ถ๋ชจ ํด๋์ค๊ฐ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ฉด, ํด๋น ๋ถ๋ชจ ํด๋์ค์๋ค๊ฐ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ ๋ณํ์ ์ถํ ๋ถ๋ชจ ํด๋์ค๊ฐ ์ ๋ฐ์ดํธ ๋ ๋ ์ถฉ๋/์ค๋ฅ ์ด์๊ฐ ์์ ์ ์๋ค.
์ด๋ฐ ํด๋์ค๊ฐ ์๋ค๊ณ ํ ๋, ์ฌ๊ธฐ์ 'ํ๊ท ๊ฐ' ๊ณ์ฐ์ ์ถ๊ฐํ๊ณ ์ถ๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด, ๋ฐ๋ก ์ด Person class ์ ํ๊ท ๊ฐ์ ๊ณ์ฐํ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ๋ ๋ฐ์ํ ์ ์๋ ๋ถ์์ฉ๋ค์ ๊ณ ๋ คํด์, ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค.
์ด๋ ๊ฒ ๋ง๋ค๊ณ ๋๋, ์ค๋ณต๋๋ ๋ถ๋ถ์ด ๋ง๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋, '์์'๊ฐ๋ ์ด ์ฌ์ฉ๋๋ค.
extends๋ฅผ ์ด์ฉํด์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ค์ ์์ํ๋ ๊ฒ์ด๋ค. ์ค๋ณต๋๋ ๋ด์ฉ์ ์ง์์ฃผ๊ณ , ์ถ๊ฐํ ๋ฉ์๋๋ง ์์ฑํด์ฃผ๋ฉด ๋!
๐๐python
์์๋ฐ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ () ์์ ์จ์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋๋ ํ์ด์ฌ์ ์์๊ณผ๋ ์ด์ง ๋ค๋ฅด๋ค.
๐Super
์์ํด๋์ค์์ ๋ถ๋ชจํด๋์ค ์์ฑ+์ถ๊ฐ ํด์ฃผ๊ณ ์ถ์๋, ์ค๋ณต์ ์ค์ด๊ธฐ ์ํด 'super'๋ฅผ ์ฌ์ฉํ๋ค.