ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

final ์“ฐ๋Š” ์ด์œ !

static ์“ฐ๋Š” ์ด์œ ! class์™€ ์ฐจ์ด

 

 

ํ•ญ์ƒ ์• ๋งคํ•˜๊ฒŒ ํ–ˆ๋˜ ๊ฒƒ๋“ค.. ํ•œ๋ฒˆ ์ •๋ฆฌํ•˜๋Š” ๊ฒŒ ์ข‹๊ฒ ๋‹ค ์‹ถ์–ด์„œ ๊ธ€์„ ์”๋‹ˆ๋‹ค.

 

 

๊ธ€์ด ๋„ˆ๋ฌด ๊ธฐ๋‹ˆ๊น ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆด๊ฒŒ์š”.

 

1. final ์€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ.

2. static๊ณผ class์˜ ์“ฐ์ž„์€ ๋ฉ”์†Œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

-> ํƒ€์ž… ๋ฉ”์†Œ๋“œ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋จ, ์ฐจ์ด๋Š” static์€ ์ƒ์†์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค๋Š”์ . 

 

 

์š”์•ฝ์„ ๋ณด๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์‹ ๋‹ค๋ฉด (์ €๋Š” ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์„œ ์ฐพ์•„๋ณด๊ณ  ์ •๋ฆฌํ•จ)

๋’ท๋ฐ›์นจ๋˜๋Š” ๋‚ด์šฉ๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์œผ๋‹ˆ,

๋‹ค ์ฝ์–ด๋ณด์‹ ๋‹ค๋ฉด ์ดํ•ด๋˜์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ด์š”.

 

 

์šฐ์„  ์ฒซ๋ฒˆ์งธ, final ์€ Overriding์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

Overriding ์ด๋ž€?

๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋œ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ 

1. ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ, 2. ํƒ€์ž… ๋ฉ”์†Œ๋“œ, 3. ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ, 4. ํƒ€์ž… ํ”„๋กœํผํ‹ฐ ๋˜๋Š” 5. ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ

์— ๋Œ€ํ•˜์—ฌ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

(Overloading์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ• ๊ฒŒ์š”.)

 

 

์žฌ์ •์˜๋Š” ๋ถ€๋ชจ์˜ ํ•จ์ˆ˜๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ Override ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ ๊ธฐ๋Šฅ์„ ์ƒˆ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.. 

 

 

๋งŒ์•ฝ ์žฌ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๋ถ€๋ชจ์˜ ํ•จ์ˆ˜ ๊ตฌํ˜„์„ ๋”ฐ๋ฅด๊ณ  ์‹ถ์œผ๋ฉด

 

override func ํ•จ์ˆ˜์ด๋ฆ„() {

  super.ํ•จ์ˆ˜์ด๋ฆ„()

 

์ด๋ ‡๊ฒŒ super์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๋จ.

 

 

๊ทธ๋Ÿฌ๋‹ˆ๊น final ์€ ์ƒ์†๋˜๋Š” ํด๋ž˜์Šค์—์„œ ๋ฉ”์†Œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ผ์š”!

(static์˜ ์“ฐ์ž„๊ณผ class์™€์˜ ์ฐจ์ด๋Š” 2. ํƒ€์ž… ๋ฉ”์†Œ๋“œ์™€ 4. ํƒ€์ž… ํ”„๋กœํผํ‹ฐ์—์„œ ์„ค๋ช…์ค‘..)

 

 

๋ฉ”์†Œ๋“œ๊ฐ€ ๋จธ๊ณ  ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ญ”๋ฐ..

-> ๋ฉ”์†Œ๋“œ๋Š” ํ•จ์ˆ˜์ด๊ณ  ํ”„๋กœํผํ‹ฐ๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ

car๋ผ๋Š” class์— stop๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ•˜๋Š” func(๋ฉ”์†Œ๋“œ)๊ฐ€ ์žˆ๋Š” ๊ฑฐ๊ณ ,

car์˜ ํ”„๋กœํผํ‹ฐ๋กœ๋Š” car์˜ ์ผ๋ จ๋ฒˆํ˜ธ๋ผ๋Š” ์†์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

 

 

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ, ํƒ€์ž… ๋ฉ”์„œ๋“œ, ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ญ”์ง€

์–ด๋–ค ํŠน์„ฑ์ด ์žˆ๋Š”์ง€ ์ถ”๊ฐ€ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

1. ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋Š” 

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์•ˆ์˜ (์•„๋ฌด ํ‚ค์›Œ๋“œ๋„ ์•ˆ ๋ถ™์€) ํ•จ์ˆ˜๋กœ

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์˜ ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ํ•„์š”ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

 

 

์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋Š” ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ–ˆ์ฃ ?

 

 

Car๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ›„ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”๋กœ stop()์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์š”!!!!!!!

 

 

์ธ์Šคํ„ด์Šคํ™”๋ž€ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

-> let appleCar = Car()       // Car ํด๋ž˜์Šค๋ฅผ ๊ฐ์ฒด๋กœ ํ• ๋‹น. (์ธ์Šคํ„ด์Šคํ™”)

 

 

์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋Š” Car๋ผ๋Š” ํด๋ž˜์Šค ํƒ€์ž… ๊ฐ์ฒด์ธ appleCar ๋ง๊ณ ๋„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

(๊ทธ๋ž˜์„œ ์ด๋ฆ„์ด ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ!!)

 

 

Overriding๋Š” ์ด๋Ÿฐ ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ(class์— ์†ํ•˜๋Š” func๋งŒ ์ƒ์† ๊ฐ€๋Šฅ. ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์€ ์ƒ์† ์•ˆ๋˜๋‹ˆ๊น..)๋ฅผ

์žฌ์ •์˜ํ•ด์„œ ์“ด๋‹ค~๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑธ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒŒ final์ด๊ณ ์š”.

 

 

๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค ๋‚ด์˜ ๊ฐ’์„ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

https://docs.swift.org/swift-book/LanguageGuide/Methods.html

 

let counter = Counter()             // ์ธ์Šคํ„ด์Šคํ™”

counter.increment()                  //  count = 1

counter.increment(by: 5)          // count = 6

counter.reset()                           // count = 0

 

 

์ด๋ ‡๊ฒŒ ๋ง์ด์ฃ ..

 

 

๊ทผ๋ฐ ์˜ˆ์™ธ๊ฐ€ ์žˆ์–ด์š”

 

 

๊ตฌ์กฐ์ฒด์™€ ์—ด๊ฑฐํ˜•์€ ๊ฐ’ ํƒ€์ž…์ด๋ผ ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฉ”์†Œ๋“œ์— mutating์„ ๋ถ™์—ฌ ์ฃผ๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ด์š”!!

 

 

https://docs.swift.org/swift-book/LanguageGuide/Methods.html

 

 

์ด๋ ‡๊ฒŒ ๋ง์ด์ฃ !

 

์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ .

class๋Š” ์ฐธ์กฐ ํƒ€์ž…. struct๋Š” ๊ฐ’ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

 

๊ฐ’ํƒ€์ž…์˜ ์†์„ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ๋ฐ mutating์œผ๋กœ ์ด๋ฅผ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

์™œ ๊ฐ’ํƒ€์ž…์€ ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋‚ด์—์„œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ƒ?

 

์ด๋Š” ๊ฐ’ํƒ€์ž…์ด COW (copy - on - write)๋กœ ์ƒ์„ฑ ์‹œ์ ์— ๋ณต์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์“ธ ๋•Œ ๋ณต์‚ฌ๊ฐ€ ๋˜๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค!

 

์ฆ‰, ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š”

์„ ์–ธ ์‹œ์ ์ด๋‚˜ ์ƒ์„ฑ ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์“ธ(์‚ฌ์šฉ์‹œ์ ) ๋•Œ ๊ฐ’์ด ๋ณต์‚ฌ๊ฐ€ ๋จ์œผ๋กœ,

์ƒ์„ฑํ•  ๋•Œ ๊ฐ’์ด ๋ฐ”๋€Œ์–ด ์ €์žฅ๋  ์ˆ˜ ์—†์–ด์š”.

 

๊ทธ๋ž˜์„œ

mutating์„ ๋ช…์‹œ ํ•จ์œผ๋กœ์จ mutating ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ๊ณ„์‚ฐ๋œ ๊ฐ’๋“ค์„

์›๋ณธ ๊ตฌ์กฐ์ฒด struct์— ๋ฎ์–ด ์จ์„œ ๋ณ€๊ฒฝ ํ•˜๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

 

(https://docs.swift.org/swift-book/LanguageGuide/Methods.html ๊ณต์‹๋ฌธ์„œ์˜ mutating๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•จ)

 

 

 

2. ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋Š”

 

(ํ•œ์ค„์ •๋ฆฌ) ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์˜๋ฏธํ•ด์š”.

 

์–ด๋–ป๊ฒŒ ๋ฐ”๋กœ ์“ฐ๋ƒ.

func ์•ž์— ํ‚ค์›Œ๋“œ class๋‚˜, static์„ ๋ถ™์—ฌ์„œ ์ธ์Šคํ„ด์Šคํ™” ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!!

 

 

์™œ ํ•จ์ˆ˜ ์•ž์— ํด๋ž˜์Šค๋ฅผ ๋ถ™์—ฌ?? ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค๊ณ , ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜์ง€.. ํ•˜์‹ค ์ˆ˜๋„ ์žˆ์œผ์‹ ๋ฐ (์ €๋„ ๊ทธ๋Ÿผ^^)

 

 

Hello ์•ž์˜ class๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ์จ ๊ฐ์ฒด๋ฅผ ๋””์ž์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์˜ class์ด๊ณ ,

func์•ž์˜ class๋Š” ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.. (๊ตฌ๋ถ„์ด ์ข€ ๋˜์‹œ๋‚˜์š”?)

 

 

 

static๊ณผ class์˜ ์ฐจ์ด ๋ณด์ด์‹œ๋‚˜์š”?

 

 

class์— ์†ํ•œ func๋Š” ํ‚ค์›Œ๋“œ class, static ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๊ตฌ์กฐ์ฒด์™€ ์—ด๊ฑฐํ˜•์„ ์œ„ํ•œ func๋Š” static ๋งŒ ์‚ฌ์šฉ!!

 

 

์—ฌ๊ธฐ์„œ ๋งจ ์œ„์˜ ๋‘๋ฒˆ์งธ ๊ถ๊ธˆํ–ˆ๋˜ static์„ ์“ฐ๋Š” ์ด์œ ์™€ class์™€ ์ฐจ์ด์  ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.

 

 

static๊ณผ class์˜ ์ฐจ์ด์ ์€ static ์€ override ๋ถˆ๊ฐ€๋Šฅ! class๋Š” ๊ฐ€๋Šฅ์ž…๋‹ˆ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ์•„๊นŒ ์œ„์—์„œ final์€ override๋ฅผ ๋ง‰๋Š”๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ..  final class func ๋Œ€์‹  static func๋ฅผ ์“ฐ๋ฉด ์žฌ์ •์˜๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด๊ฐ€์š”? -> ์ •๋‹ต์ž…๋‹ˆ๋‹ค.

 

 

์ •๋ฆฌ) ์“ฐ๋Š” ์ด์œ 

 

static๊ณผ class ๋‘˜๋‹ค func(๋ฉ”์†Œ๋“œ) ์•ž์— ๋ถ™์—ˆ์„ ๋•Œ, 

func๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด์—ˆ์Šต๋‹ˆ๋‹ค~

(ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋กœ ์“ฐ๊ฒ ๋‹ค๋Š” ํ‚ค์›Œ๋“œ)

 

 

ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉฐ,

๋ฐ”๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋๋‚ด๋Š” ํ•จ์ˆ˜์— ์“ฐ์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ ๋ฆฌํ„ด๊ณผ ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ํ•จ์ˆ˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

์“ฐ์ž„์ด ๋” ๊ถ๊ธˆํ•˜์‹  ๋ถ„์€ docs.swift.org/swift-book/LanguageGuide/Methods.html ์˜

Type Methods ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”!

๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์“ฐ์ด๊ธฐ๋„ ํ•˜๋„ค์š”.

 

 

 

3. ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ๋Š” ํŠน์ • ์ธ์Šคํ„ด์Šค์— ์†ํ•˜๋Š” ๊ทธ๋ƒฅ just ์ผ๋ฐ˜(์ €์žฅ, ์—ฐ์‚ฐ) ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งํ•ด์š”.

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์˜ ํŠน์ง•์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๋„ ๊ฐ™์ด ์ƒ์„ฑ์„ ํ•ฉ๋‹ˆ๋‹ค.

                                 

                                                                                                                                             

์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์‹ ๋‹ค๋ฉด ๋ฐ‘์„ ์ฝ์–ด์ฃผ์„ธ์šฉ!

 

 

์šฐ์„  ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

ํ”„๋กœํผํ‹ฐ๋Š” ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์— ์†ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœํผํ‹ฐ์—” 2๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ ํ”„๋กœํผํ‹ฐ(Stored Properties), ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ(Computed Properties).

 

 

์ฒซ๋ฒˆ์งธ, ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.

(์˜ˆ๋ฅผ ๋“ค๋ฉด var๋‚˜ let ๊ฐ™์€ ๋ณ€์ˆ˜, ์ƒ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์ฃ ?)

 

 

ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์š”. (์—ด๊ฑฐํ˜•์—์„  ๋ถˆ๊ฐ€)

๊ทธ๋ฆฌ๊ณ  ์ €์žฅ ํ”„๋กœํผํ‹ฐ์—๋Š” ์ง€์—ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ(Lazy Stored Properties)๋ผ๋Š” ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ง€์—ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์ด ์‚ฌ์šฉ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์„ ์–ธ์„ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊น ๋Šฆ์€ ์„ ์–ธ..  ๋ณ€์ˆ˜ ์•ž์— lazy var ๋ผ๊ณ  ํ•ด๋‘๋ฉด ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „๊นŒ์ง€ ์„ ์–ธ๋˜์ง€ ์•Š์•„์š”.

(let์€ ์ƒ์ˆ˜์ด๋ฏ€๋กœ lazy๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†์–ด์š”)

 

 

ํŠน์ • ์š”์†Œ์— ์˜์กด์ ์ด์–ด์„œ ๊ทธ ์š”์†Œ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ์ ์ ˆํ•œ ๊ฐ’์„ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋‚˜,

๋ณต์žกํ•œ ์—ฐ์‚ฐ์ผ ๊ฒฝ์šฐ, ์‚ฌ์šฉ๋˜๊ธฐ ์ „๊นŒ์ง€ ์„ ์–ธํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ธ์Šคํ„ด์Šค์˜ ์ดˆ๊ธฐํ™” ์‹œ์ ์— ์‹œ๊ฐ„์„ ์ค„์ด๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

์ถ”๊ฐ€๋กœ ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋ฅผ ์ •์˜ํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋‹จ, Lazy var ํ”„๋กœํผํ‹ฐ์—๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ)

 

 

ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

willSet : ๊ฐ’์ด ์ €์žฅ๋˜๊ธฐ ๋ฐ”๋กœ ์ง์ „์— ํ˜ธ์ถœ๋จ 

didSet : ์ƒˆ ๊ฐ’์ด ์ €์žฅ๋˜๊ณ  ๋‚œ ์งํ›„์— ํ˜ธ์ถœ ๋จ 

 

 

 

totalApples๋ผ๋Š” ๋ณ€์ˆ˜์˜ ํด๋กœ์ €๋กœ willSet๊ณผ didSet์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ ์˜ต์„œ๋ฒ„๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ชจ์Šต.

๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค willSet๊ณผ didSet์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 

(willSet์—์„œ๋Š” ์ƒˆ ๊ฐ’์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ newValue๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

didSet์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ oldValue๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

 

 

๋‘๋ฒˆ์งธ. ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด ์ฃผ๋Š” ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์š”.

(๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์—ด๊ฑฐํ˜•์—์„œ๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป)

 

 

์• ํ”Œ ์Šค์œ„ํ”„ํŠธ ์–ธ์–ด ๊ฐ€์ด๋“œ์˜ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ ์˜ˆ์ œ๋ฅผ ๋ณด๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์‚ฌ๊ฐํ˜•์˜ ์ขŒํ‘œ์™€ ํฌ๊ธฐ๋ฅผ ๊ตฌ์กฐ์ฒด๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

Rect๋ผ๋Š” ๊ตฌ์กฐ์ฒด๋Š” Center๋ผ๋Š” ์ค‘์  ํ‘œํ˜„ํ•˜๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

center์˜ ๊ฐ’์„ ์ •ํ•˜๊ธฐ๋„ ํ•˜๊ณ (setter), return์œผ๋กœ origin(์›์ )์˜ ์ขŒํ‘œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋„(getter) ํ•ด์š”.

center์ขŒํ‘œ๋ฅผ 15,15๋กœ ์ง€์ •ํ•ด์ฃผ๊ณ . square.origin.x, square.origin.y ๋กœ ์‚ฌ๊ฐํ˜•์˜ ์›์ ์„ get ํ•ด์˜จ ๋ชจ์Šต 

 

 

์ด๋ ‡๊ฒŒ center์ขŒํ‘œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.

 

 

let initialSquareCenter๋ฅผ ์˜ˆ์ œ์—์„œ๋Š” ์„ ์–ธ๋งŒ ํ•ด์ฃผ๊ณ  ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์•˜์–ด์š”.

let initialSquareCenter๋Š” ๋ง ๊ทธ๋Œ€๋กœ square์˜ ์ดˆ๊ธฐ ์„ผํ„ฐ์ ์˜ ๊ฐ’ Point(x:~,y:~)๋ฅผ ์ €์žฅํ•˜๋Š” ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

 

์„ ์–ธํ•œ ๊น€์— ์ถœ๋ ฅ๋„ ํ•ด๋ณผ๊ฒŒ์š”ใ…Žใ…Ž

print(initialSquareCenter.x, initialSquareCenter.y) ํ•˜๋ฉด ์ดˆ๊ธฐ์˜ ์„ผํ„ฐ ๊ฐ’์ธ 5,5๊ฐ€ ์ถœ๋ ฅ๋˜๊ฒ ์ฃ ?

 

 

playground ์‹คํ–‰ ๋ชจ์Šต

 

(์˜ˆ์ƒํ–ˆ๋˜ 5,5๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๋ชจ์Šต!)

 

 

๋˜ํ•œ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์˜ setter๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.!!

์ƒ๋žต ์˜ˆ์ œ๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

์ง์œก๋ฉด์ฒด ๋ถ€ํ”ผ๋ฅผ ๊ตฌ์กฐ์ฒด๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

 

setter๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ๋žตํ–ˆ๋ƒ..

setter ๋Œ€์‹  ๊ตฌ์กฐ์ฒด ์•ˆ์— ๋ถ€ํ”ผ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ 3๊ฐ€์ง€๋ฅผ ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ(๊ฐ’๋“ค์€ ์ œ๋กœ)๋กœ ์ดˆ๊ธฐํ™”ํ•ด๋’€๋„ค์š”.

๊ทธ๋ฆฌ๊ณ  ๊ทธ 3์š”์†Œ์˜ ๊ณฑ์„ ๋ฆฌํ„ดํ•˜๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋ฅผ ์•ˆ์— ์ž‘์„ฑํ•ด๋’€์–ด์š”.

 

 

๊ทธ๋ž˜์„œ .volume ์œผ๋กœ get ํ•˜๋Š” ๋ชจ์Šต! (setter๋Š” ์ƒ๋žต๋œ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ)

 

 

๋˜ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” setter๋ผ๋Š” ๊ฐ’ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ

๋”ฐ๋กœ ์˜ต์ €๋ฒ„๋ฅผ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์š”.

 

 

๋‘ ๊ฐ€์ง€์˜ ํ”„๋กœํผํ‹ฐ ์ดํ•ดํ•˜์…จ์œผ๋ฆฌ๋ผ ์ƒ๊ฐํ•˜๊ณ 

๋ณธ๋ก ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ.

 

 

๊ณ ๋กœ

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ!! ๋Š”

 

ํŠน์ • ์ธ์Šคํ„ด์Šค์— ์†ํ•˜๋Š” ๊ทธ๋ƒฅ just ์ผ๋ฐ˜(์ €์žฅ, ์—ฐ์‚ฐ) ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์˜ ํŠน์ง•์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค

์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๋„ ๊ฐ™์ด ์ƒ์„ฑ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

์œ„์— ์ผ์—ˆ๋˜ ๋ง์ธ๋ฐ ์ด์   ์ดํ•ด๊ฐ€ ๊ฐ€์‹œ์ฃ ??

 

 

 

4. ํƒ€์ž… ํ”„๋กœํผํ‹ฐ

 

 

ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ํ”„๋กœํผํ‹ฐ๋งŒ์„ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งํ•ด์š”.

๊ทธ๋ž˜์„œ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์„ ์ •์˜ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. 

 

 

์œ„์— 2๋ฒˆ์—์„œ func ์•ž์— static์ด๋‚˜ class๊ฐ€ ๋ถ™์œผ๋ฉด ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ํ–ˆ์—ˆ์ฃ ?

 

 

ํ”„๋กœํผํ‹ฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋กœํผํ‹ฐ ์•ž์— static์ด๋‚˜ class๋ฅผ ๋ถ™์ด๋ฉด ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋˜ classํ‚ค์›Œ๋“œ๋งŒ Overriding ๋ผ์š”.

 

 

์˜ˆ์ œ๋ฅผ ๋ณด์‹ค๊ฒŒ์š”!

 

 

 

static์ด ๋ถ™์€ ํƒ€์ž…ํ”„๋กœํผํ‹ฐ๋Š” ์ธ์Šคํ„ด์Šคํ™” ์—†์ด ์จ์š”. ๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ๊ตฌ์กฐ์ฒด Apple ๋‹ท storedTypeProperty ๋กœ ์“ฐ๋Š” ๋ชจ์Šต.

 

์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ BBBBB๋กœ๋„ ๋ฐ”๊ฟ”์ง‘๋‹ˆ๋‹ค!!

์ด๊ฑฐ ์ข€ ํžˆํŠธ๋„ค์š”. (์˜ˆ์ œ๋Š” ๊ตฌ์กฐ์ฒด์ธ๋ฐ class์—์„œ๋„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ, enum์€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ํ—ˆ์šฉ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด static ์„ ๋ถ™์—ฌ์•ผํ•จ.)

 

 

 

 

์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์—” ๊ฐ’์„ setํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. (setter๊ฐ€ ์žˆ์—ˆ์œผ๋ฉด ์ €์žฅ๋๊ฒ ์ฃ ?)

 

 

 

5. ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ

 

 

์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ๋ž€ ์ฝœ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ์‹œํ€€์Šค ๋“ฑ์˜ ์š”์†Œ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

(๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ €์žฅํ•œ๋‹ค๋‹ˆ, ํ”„๋กœํผํ‹ฐ๋ž‘ ๋น„์Šทํ•˜๋„ค์š”?)

 

 

์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ์—๋„ getter์™€ setter๊ฐ€ ์žˆ๋Š”๋ฐ getter๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

(์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” setter๊ฐ€ optional์ด์—ˆ๋Š”๋ฐ ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ๋Š” getter๊ฐ€ optional์ธ ๋ชจ์Šต)

 

 

์ •์˜๋Š” ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹๊ณผ ๊ฐ™์ด setter, getter ๋ฐฉ์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

 

subscript(index: Int) -> Int {

  get { // optional

    // ์ ์ ˆํ•œ return ๊ฐ’

  }

  set(newValue) {

    // ์ ์ ˆํ•œ set ์•ก์…˜

  }

}

 

์ด๋Ÿฐ ๊ตฌ์กฐ ํ˜•ํƒœ์ด๊ณ  ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ์˜ˆ์ œ๋กœ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

Getter๊ฐ€ ์ƒ๋žต๋œ ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

TimesTable์€ ์ •์ˆ˜์˜ n๋ฐฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค.

 

๋ณด์‹œ๋ฉด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€๋„ ์•Š์•˜๋Š”๋ฐ threeTimesTable[6]์ด๋ผ๋Š” ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์ฃ ?

Setter์˜ ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ threeTimesTable[6] ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ๋‚ด๋ถ€์—์„œ ๋š๋”ฑ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฑฐ์ฃ ..

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ํ• ๋‹น, ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ๋ฐ”๋กœ ์ด๊ฒ๋‹ˆ๋‹ค. (์‹ ๊ธฐํ•˜๋„ค์š” subcript ์ฒ˜์Œ ๋ด„)

 

 

์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ ์ดํ•ด ์ž˜ ๋˜์…จ๊ธธ..!!

 

 

์—ฌํƒœ Class ์ƒ์† ์‹œ Overriding์ด ๊ฐ€๋Šฅํ•œ 5๊ฐ€์ง€ ๊ฒƒ๋“ค์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.  (์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹คใ…œ)

 

 

Overloading์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด์•ผ๊ฒ ์ฃ ?

 

 

๊ทธ๋Ÿผ, Overloading์ด๋ž€

๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ๋งŒ๋“œ๋Š”๋ฐ, ํŒŒ๋ผ๋ฏธํ„ฐ ์œ ํ˜•์„ ๋‹ฌ๋ฆฌ ํ•˜์—ฌ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

Overriding๊ณผ์˜ ์ฐจ์ด๋ฅผ ๋ณด์ž๋ฉด.

 

Overriding๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ์†๊ณผ๋Š” ๊ด€๊ณ„๊ฐ€ ์—†์–ด์š”.

Overriding๋Š” ๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฒƒ์„ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š”, ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ƒ์†์„ฑ์„ ์˜๋ฏธํ•˜๊ณ 

 

Overloading์€ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก, ๊ฐ์ฒด์ง€ํ–ฅ ๋‹คํ˜•์„ฑ์˜ ์˜๋ฏธ๋ฅผ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ •๋ฆฌ๋ฅผ ํ•˜์ž๋ฉด.!

 

 

1. final ์“ฐ๋Š” ์ด์œ  => Overriding ์ œํ•œ

2. static๊ณผ class์˜ ์“ฐ์ž„๊ณผ ์ฐจ์ด

    ์“ฐ์ž„ => ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ํ•˜๊ธฐ์œ„ํ•จ(ํƒ€์ž… ๋ฉ”์†Œ๋“œ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ)

    ์ฐจ์ด => static์€ ์ƒ์† ๋ถˆ๊ฐ€

 

(๊ทธ๋ฆฌ๊ณ  ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ๋“ค.. ๋„ˆ๋ฌด ๋งŽ์•˜์ฃ )

 

๊ธ€๋กœ ์ •๋ฆฌํ•˜๋‹ˆ๊นŒ (์ €๋Š”) ์ข€ ์ดํ•ด๊ฐ€ ๋˜๋„ค์š”. 

 

 

์ตœ๋Œ€ํ•œ ์ฐพ์•„๋ณด์‹œ๋Š” ๋ถ„๋“ค๋„ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜๊ฒŒ๋” ์“ฐ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋Š”๋ฐ..

 

์ข€ ๋„์›€์ด ๋˜์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!

 

๋Œ“๊ธ€