250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ใ…ฃใ„ท
  • ์ปดํฌ์ง€์…˜
  • MySQL
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

TypeScript/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript

[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] OOP ๋‹คํ˜•์„ฑ, ์ƒ์† ๊ฐœ๋… ํ™•์‹คํ•˜๊ฒŒ ์ •๋ฆฌ

2022. 4. 21. 18:39
728x90


๋‹คํ˜•์„ฑ

 

  • ์ •์˜ : ๋‹คํ˜•์„ฑ์ด๋ž€ ํ•˜๋‚˜์˜ ์ด๋ฆ„(๋ฐฉ๋ฒ•)์œผ๋กœ ๋งŽ์€ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
  • ํšจ๊ณผ : ๊ฐœ๋…์ ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์— ๋˜‘๊ฐ™์€ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๋‹จํ•ด์ง€๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 
์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ, ์ฝ”๋“œ ๊ธธ์ด ๊ฐ์†Œ๊ฐ€ ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.

 

 

์œ„์˜ ์„ค๋ช…์„ ์กฐ๊ธˆ ๋” ํ’€์–ด ์„ค๋ช…ํ•˜์ž๋ฉด, ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๋‹คํ˜•์„ฑ์€ [์ƒ์†]์—์„œ ๋น„๋กฏ๋˜๋Š” ํฐ ์žฅ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. ๋‹คํ˜•์„ฑ์€ ์ƒ์†์„ ํ†ตํ•ด ๋™์ผ ์ด๋ฆ„์ž„์—๋„ ๊ทธ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋‹คํ˜•์„ฑ : ๊ฐ™์€ ์ด๋ฆ„์„ ๋ถˆ๋ €๋Š”๋ฐ  ๋‹ค๋ฅธ ํ˜•์ƒ์„ ํ•˜๋Š” ๊ฒƒ(๊ฐ™์€ ๋™์ž‘์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ณผ์ •๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด)

 

[ํด๋ž˜์Šค ์ƒ์†]

extends

ํด๋ž˜์Šค ์ƒ์†์„ ์ž˜ ์ด์šฉํ•˜๋ฉด ๊ณตํ†ต์ ์ธ ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉํ•˜๋ฉด์„œ,

์ž์‹ํด๋ž˜์Šค์—์„œ๋งŒ ์กฐ๊ธˆ ๋” ์ž์‹ํด๋ž˜์Šค์— ํŠนํ™”๋œ ๊ธฐ๋Šฅ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (์˜ค๋ฒ„๋ผ์ด๋”ฉ)

๊ทธ๋ฆฌ๊ณ  super๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

[์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„]

implements

์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์„ ์ž˜ ์ด์šฉํ•˜๋ฉด ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋“ค์„ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋“ค์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ ,

์ด๋ฆ„ ํ˜ธ์ถœ์— ๋Œ€ํ•˜์—ฌ ๋‹ค๋ฅธ ๊ตฌํ˜„๋ฐฉ์‹์„ ๊พ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


๋‹คํ˜•์„ฑ(์˜ ํŠน์žฅ์ )์ด๋ž€, 'ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„' ๋˜๋Š” '๊ฐ™์€ ๋ถ€๋ชจ์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์†'ํ•œ ์ž์‹ํด๋ž˜์Šค๋“ค์ด,

๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ํ˜น์€ ๊ฐ™์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค!!!

  • ๋‹คํ˜•์„ฑ์ด๋ž€ ํ•˜๋‚˜์˜ ์ด๋ฆ„(๋ฐฉ๋ฒ•)์œผ๋กœ ๋งŽ์€ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๋Š” ๊ธฐ๋ฒ•.
  • ๊ฐœ๋…์ ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…(์ด์ง€๋งŒ ๋‚ด๋ถ€์˜ ์„ธ๋ถ€ ์ž‘์—…๋“ค์€ ๊ฐ์ž ๋‹ค๋ฅธ)์„ ํ•˜๋Š” ํ•จ์ˆ˜๋“ค(๋ถ„๋ช… ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ ๋‹ค ๋‹ค๋ฅธ ํด๋ž˜์Šค ์ถœ์‹ ์ธ)
  • ์ด API๋ฅผ ๊ณตํ†ต์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ํด๋ž˜์Šค๋“ค์ด ๊ฐ™์€ ๊ฐœ๋…์ผ์ง€๋ผ๋„ ์„ฌ์„ธํ•˜๊ฒŒ ๋‹ค๋ฅธ ๋™์ž‘๋“ค์„ ํ•˜๋Š” Magin-
  • ํšจ๊ณผ : ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๋‹จํ•ด์ง

์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

๋ชจ๋‘์—๊ฒŒ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ๋„ ๋‹ค ๋‹ค๋ฅธ ํ–‰๋™์„ ํ•œ๋‹ค -> ์ฆ‰, ๊ฐ๊ฐ์„ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๋‹ˆ API๊ฐ€ ๊ฐ„์†Œํ™”๋˜๊ณ  ๋ณต์žก์„ฑ์€ ์ค„์–ด๋“ ๋‹ค. 


 

  

์ด๋ ‡๊ฒŒ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ํ˜น์€ ๊ฐ™์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณผ์ •์—์„œ,

๊ฐœ๋ฐœ์ž๋Š” ๊ฐ ํด๋ž˜์Šค๋“ค์˜ ์„ธ๋ถ€์ ์ธ ๋‚ด๋ถ€ ๊ตฌํ˜„์‚ฌํ•ญ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๊ณตํ†ต API๋งŒ์„ ๋ณด๊ณ  ๋ฝ‘์•„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋‹ˆ ์‚ฌ์šฉ์‹œ์—๋„ ๊ฐ„ํŽธํ•จ์„ ๋А๋‚„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

<๋‹คํ˜•์„ฑ ์˜ˆ์‹œ1>

์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋™๋ฌผ ํด๋ž˜์Šค์— ์šธ์Œ() "cry"

๊ณ ์–‘์ด ํด๋ž˜์Šค์— ์šธ์Œ(): ์˜ค๋ฒ„๋ผ์ด๋”ฉ "๋ƒ์˜น"

๊ฐ•์•„์ง€ ํด๋ž˜์Šค์— ์šธ์Œ(): ์˜ค๋ฒ„๋ผ์ด๋”ฉ "์—‰์—‰๋ฉ๋ฉ"

๊ฐ™์€ "์šธ์Œ" ์†์„ฑ์ž„์—๋„ ์‹ค์ œ ์šธ์Œ์†Œ๋ฆฌ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋œ๋‹ค.

 

OOP์—์„œ ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์„ ๋…น์—ฌ๋‚ด๋Š” ๋ฐฉ๋ฒ•์€, ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์ด๋‹ค.

  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ
    - ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ƒ์†๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ž์‹ ํด๋ž˜์Šค ํŠน์ง•์— ๋งž๊ฒŒ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  • ์˜ค๋ฒ„๋กœ๋”ฉ
    - ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ๋งˆ๋‹ค ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ๋„ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฐœ๋…
    • ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด ๋ฉ”์„œ๋“œ๋ผ๋ฆฌ ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐฏ์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฉด ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์ ์šฉ

 

 

 

์ƒ์†

(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ ์ž๋ฃŒ์ธ๋ฐ ๊ฒน์น˜๋Š” ์–˜๊ธฐ๋ผ์„œ ์—ฌ๊ธฐ ๋ณต๋ถ™ํ•ฉ๋‹ˆ๋‹ค.)

 

 

ํด๋ž˜์Šค ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์— ์กด์žฌํ•˜๋˜ ๊ธฐ๋Šฅ์„ ํ† ๋Œ€๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ‚ค์›Œ๋“œ extends ํ™œ์šฉ

์ƒ์†์ด ํ•„์š”ํ•œ ์ด์œ 

์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์—†์• ๊ธฐ ์œ„ํ•จ
์ฝ”๋“œ์˜ ์ค‘๋ณต์ด ๋งŽ์•„์ง€๋ฉด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋„ ํ”ผ๊ณคํ•˜์ง€๋งŒ, ์œ ์ง€ ๋ณด์ˆ˜์—์„œ๋„ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ฒŒ ๋œ๋‹ค.

class Shape {
  constructor(width, height, color) {
    this.width = width;
    this.height = height;
    this.color = color;
  }
  draw() {
    console.log(`drawing ${this.color} color of`);
  }
  getArea() {
    return this.width * this.height;
  }
}

class Rectangle extends Shape {}
const rectangle1 = new Rectangle(20, 20, "blue");
rectangle1.draw(); //drawing blue color

const rectangle2 = new Rectangle(10, 50, "pink");
rectangle2.draw(); //drawing pink colorโ€‹

์ƒ์† ํ›„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

shape๋ผ๋Š” class๋ฅผ ์‚ฌ๊ฐํ˜•๊ณผ ์‚ผ๊ฐํ˜•์— ์ƒ์†ํ•˜๋˜,

๊ฐ๊ฐ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

<์ผ€์ด์Šค 1 : ํ•จ์ˆ˜ ๋‚ด์šฉ์„ ์•„์˜ˆ ๋ฐ”๊พผ๋‹ค.>

 
class Shape {
  constructor(width, height, color) {
    this.width = width;
    this.height = height;
    this.color = color;
  }
  draw() {
    console.log(`drawing ${this.color} color`);
  }
  getArea() {
    return this.width * this.height;
  }
}

class Rectangle extends Shape {}

const rectangle1 = new Rectangle(20, 20, "blue");
console.log(rectangle1.getArea()); //400

const rectangle2 = new Rectangle(10, 50, "pink");
console.log(rectangle2.getArea()); //500


class Triangle extends Shape {
//ํ•„์š”ํ•œ ํ•จ์ˆ˜๋งŒ ์žฌ์ •์˜ ํ•ด์„œ ์“ด๋‹ค (์˜ค๋ฒ„๋ผ์ด๋”ฉ)
  getArea() {
    return (this.width * this.height) / 2;
  }
}
const triangle1 = new Triangle(20, 20, "orange");
console.log(triangle1.getArea()); //200

const triangle2 = new Triangle(10, 50, "skyblue");
console.log(triangle2.getArea()); //250โ€‹

<์ผ€์ด์Šค 2 : ๋ถ€๋ชจ์— ์ •์˜๋œ ํ•จ์ˆ˜๋„ ๋ถ€๋ฅด๊ณ  ์‹ถ๋‹ค๋ฉด super.๋ฉ”์†Œ๋“œ๋ช…() >

class Shape {
  constructor(width = "2", height = "2", color = "white") {
    this.width = width;
    this.height = height;
    this.color = color;
  }
  draw() {
    console.log(`drawing ${this.color} color`);
  }
  getArea() {
    return this.width * this.height;
  }
}

class Rectangle extends Shape {
  draw() {
    console.log("๏นฎ");
  }
}
const rectangle = new Rectangle(10, 10, "red");
rectangle.draw(); //๏นฎ

class Triangle extends Shape {
  draw() {
    super.draw();
    console.log("โˆ†");
  }
  getArea() {
    return (this.width * this.height) / 2;
  }
}
const triangle = new Triangle(10, 5, "yellow");
triangle.draw();    //drawing yellow color
                    //โˆ†

์ƒ์„ฑ์ž ์˜ค๋ฒ„๋ผ์ด๋”ฉ

 

์ผ๋ฐ˜ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ์ƒ์† ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ„ ์ฐจ์ด๋Š” new์™€ ํ•จ๊ป˜ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

  • ์ผ๋ฐ˜ ํด๋ž˜์Šค๊ฐ€ new์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋ฉด, ๋นˆ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  this์— ์ด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • ๋ฐ˜๋ฉด, ์ƒ์† ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด, ์ผ๋ฐ˜ ํด๋ž˜์Šค์—์„œ ์ผ์–ด๋‚œ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ƒ์† ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๋นˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  this์— ์ด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ์ผ์„ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธธ ๊ธฐ๋Œ€ํ•œ๋‹ค.

์ด๋Ÿฐ ์ฐจ์ด ๋•Œ๋ฌธ์— ์ƒ์† ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„  super๋ฅผ ํ˜ธ์ถœํ•ด ๋ถ€๋ชจ ์ƒ์„ฑ์ž๋ฅผ ์‹คํ–‰ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด this๊ฐ€ ๋  ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์•„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ

์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด this๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— super()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Rabbit์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 
class Animal {

  constructor(name) {
    this.speed = 0;
    this.name = name;
  }
}

class Rabbit extends Animal {

  constructor(name, earLength) {
    super(name);
    this.earLength = earLength;
  }
}

// ์ด์ œ ์—๋Ÿฌ ์—†์ด ๋™์ž‘
let rabbit = new Rabbit("ํฐ ํ† ๋ผ", 10);
console.log(rabbit.name); // ํฐ ํ† ๋ผ
console.log(rabbit.earLength); /

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'TypeScript > ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๋‹คํ˜•์„ฑ(polymorphism)์ด ๋ญ๊ฐ€ ์ข‹์€ ๊ฒƒ์ผ๊นŒ?  (0) 2022.04.22
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ปคํ”ผ๋จธ์‹ ํด๋ž˜์Šค <-์ƒ์†- ์นดํŽ˜๋ผ๋–ผ๋จธ์‹ ํด๋ž˜์Šค  (0) 2022.04.21
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ค๋ฆญ ํƒ€์ž… ๋ณ„์นญ  (0) 2022.04.21
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] 2๊ฐœ ์ด์ƒ์˜ ์ œ๋„ค๋ฆญ ์ ์šฉํ•ด๋ณด๊ธฐ(์ถ”๋ก , ๋ช…์‹œ, ํ”„๋กœ๋ฏธ์Šค ์ œ๋„ค๋ฆญ๊นŒ์ง€)  (0) 2022.04.21
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ํ•จ์ˆ˜ํ˜ธ์ถœ ์‹œ๊ทธ๋‹ˆ์ฒ˜์˜ ์ œ๋„ค๋ฆญ  (0) 2022.04.21
    'TypeScript/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๋‹คํ˜•์„ฑ(polymorphism)์ด ๋ญ๊ฐ€ ์ข‹์€ ๊ฒƒ์ผ๊นŒ?
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ปคํ”ผ๋จธ์‹ ํด๋ž˜์Šค <-์ƒ์†- ์นดํŽ˜๋ผ๋–ผ๋จธ์‹ ํด๋ž˜์Šค
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ค๋ฆญ ํƒ€์ž… ๋ณ„์นญ
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] 2๊ฐœ ์ด์ƒ์˜ ์ œ๋„ค๋ฆญ ์ ์šฉํ•ด๋ณด๊ธฐ(์ถ”๋ก , ๋ช…์‹œ, ํ”„๋กœ๋ฏธ์Šค ์ œ๋„ค๋ฆญ๊นŒ์ง€)
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”