๐Ÿ“• [Object] 12์žฅ. ๋‹คํ˜•์„ฑ

๋ฐ•์ƒ๋ฏผยท2024๋…„ 3์›” 23์ผ

Book

๋ชฉ๋ก ๋ณด๊ธฐ
18/22
post-thumbnail

โญ๏ธ Intro

  • ์ƒ์†์˜ ๋ชฉ์ ์€ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋‹ค.

  • ์ƒ์†์€ ํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌ์กฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • ํƒ€์ž… ๊ณ„์ธต์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ ์ค‘ ํ•˜๋‚˜์ธ ๋‹คํ˜•์„ฑ์˜ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์ƒ์†์„ ์ด์šฉํ•ด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค ํ•œ๋‹ค๋ฉด ์Šค์Šค๋กœ์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•ด๋ณด์ž

    • ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ธ๊ฐ€? โ†’ ์˜ˆ, ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ƒ์†์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„๋ผ
    • ์ธ์Šคํ„ด์Šค๋“ค์„ ๋™์ผํ•˜๊ฒŒ ํ–‰๋™ํ•˜๋Š” ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๊ธฐ ์œ„ํ•ด์„œ์ธ๊ฐ€? โ†’ ์˜ˆ, ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.
  • ๋งŽ์€ ์‹œ๊ฐ„์ด ํ๋ฅธ ์ง€๊ธˆ๋„ ์—ฌ์ „ํžˆ ์ƒ์†์€ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

  • ํ•˜์ง€๋งŒ ์ตœ๊ทผ์˜ ์–ธ์–ด๋“ค์€ ์ƒ์† ์ด์™ธ์—๋„ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฑฐ์— ๋น„ํ•ด ์ƒ์†์˜ ์ค‘์š”์„ฑ์ด ๋งŽ์ด ๋‚ฎ์•„์กŒ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฒˆ ์žฅ์„ ํ†ตํ•ด์„œ ๋‹คํ˜•์„ฑ์ด ๋Ÿฐํƒ€์ž„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ๊ตฌํ˜„ ๋˜๋ฉฐ ์ƒ์†์ด ์ด๋Ÿฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ํƒ์ƒ‰ ๊ฒฝ๋กœ๋ฅผ ํด๋ž˜์Šค ๊ณ„์ธต์˜ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ดํ•ดํ•  ๊ฒƒ์ด๋‹ค.

โญ๏ธ ๋‹คํ˜•์„ฑ

๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๋‹จ์–ด๋Š” โ€˜๋งŽ์€โ€™์„ ์˜๋ฏธํ•˜๋Š” โ€˜polyโ€™์™€ โ€˜ํ˜•ํƒœโ€™๋ฅผ ์˜๋ฏธํ•˜๋Š” โ€˜morphโ€™์˜ ํ•ฉ์„ฑ์–ด๋กœ โ€˜๋งŽ์€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅโ€™์„ ์˜๋ฏธํ•œ๋‹ค.

๋‹คํ˜•์„ฑ์˜ ๋ถ„๋ฅ˜

  • ์œ ๋‹ˆ๋ฒ„์…œ : ํƒ€์ž…์ด ๋‹ฌ๋ผ๋„ ๊ฐ™์€ code๋ฅผ ์ˆ˜ํ–‰

    • ๋งค๊ฐœ๋ณ€์ˆ˜ : ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ด€๋ จ์ด ๋†’์€๋ฐ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์ž„์˜์˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•œ ํ›„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์— ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹ ex) List
    • ํฌํ•จ : ๋ฉ”์‹œ์ง€๊ฐ€ ๋™์ผ ํ•˜๋”๋ผ๋„ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ํ–‰๋™์ด ๋‹ฌ๋ผ ์ง€๋Š” ๊ธฐ๋Šฅ Ex) discountPolicy.calculate()
  • ์ž„์‹œ : ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ version์˜ code๋ฅผ ์ˆ˜ํ–‰

    • ์˜ค๋ฒ„๋กœ๋”ฉ : ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ์•ˆ์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ex) plus(int a), plus(double a)
    • ๊ฐ•์ œ : ์–ธ์–ด๊ฐ€ ์ง€์›ํ•˜๋Š” ์ž๋™์ ์ธ ํƒ€์ž… ๋ณ€ํ™˜์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ํƒ€์ž… ๋ณ€ํ™˜์„ ์ด์šฉํ•ด ๋™์ผํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ๋‹ค์–‘ํ•œ ํƒ€์ž…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹ ex) โ€˜+โ€™ ์—ฐ์‚ฐ์ž โ†’ ์ •์ˆ˜ํ˜• + ์ •์ˆ˜ํ˜•, ๋ฌธ์ž์—ด + ์ •์ˆ˜ํ˜•
  • ์ƒ์†์˜ ์ง„์ •ํ•œ ๋ชฉ์ ์€ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ผ ๋‹คํ˜•์„ฑ์„ ์œ„ํ•œ ์„œ๋ธŒํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

โญ๏ธ ์ƒ์†์˜ ์–‘๋ฉด์„ฑ

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๋ฐ์ดํ„ฐ์™€ ํ–‰๋™์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ด€์ ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๊ด€์ ์˜ ์ƒ์† : ์ƒ์†์„ ์ด์šฉํ•˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— ์ž๋™์œผ๋กœ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ํ–‰๋™ ๊ด€์ ์˜ ์ƒ์† : ๋ฐ์ดํ„ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ์ผ๋ถ€ ๋ฉ”์„œ๋“œ ์—ญ์‹œ ์ž๋™์œผ๋กœ ์ž์‹ ํด๋ž˜์Šค์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ์™€ ํ–‰๋™์˜ ๊ด€์ ์—์„œ๋งŒ ๋ฐ”๋ผ๋ณด๋ฉด ์ƒ์†์ด๋ž€ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ๋ฐ์ดํ„ฐ์™€ ํ–‰๋™์„ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ž๋™์ ์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ์‚ฌ์šฉ ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ด€์ ์€ ์ƒ์†์„ ์˜คํ•ดํ•œ ๊ฒƒ์ด๋‹ค.

โญ๏ธ ์—…์บ์ŠคํŒ…๊ณผ ๋™์  ๋ฐ”์ธ๋”ฉ

๐Ÿ“Œ ๊ฐ™์€ ๋ฉ”์‹œ์ง€, ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ

  • ์—…์บ์ŠคํŒ… : ๋ถ€๋ชจ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋™์  ๋ฐ”์ธ๋”ฉ : ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ ์ ˆํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ปดํŒŒ์ผ ์‹œ์ ์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰ ์‹œ์ ์— ๊ฒฐ์ •ํ•œ๋‹ค.
  • ์—…์บ์ŠคํŒ…๊ณผ ๋™์  ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์€ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ ์ด๊ฒƒ์€ ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™์˜ ์˜๋„ ์™€๋„ ์ผ์น˜ํ•œ๋‹ค.

๐Ÿ“Œ ๋™์ ๋ฐ”์ธ๋”ฉ

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

โญ๏ธ ๋™์  ๋ฉ”์„œ๋“œ ํƒ์ƒ‰๊ณผ ๋‹คํ˜•์„ฑ

  • ๋™์  ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์€ self๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์˜ ํด๋ž˜์Šค์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ƒ์† ๊ณ„์ธต์˜ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ค„์ง€๋ฉฐ ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์ด ์ข…๋ฃŒ๋˜๋Š” ์ˆœ๊ฐ„ self ์ฐธ์กฐ๋Š” ์ž๋™์œผ๋กœ ์†Œ๋ฉธ๋œ๋‹ค.

  • ๋™์  ๋ฉ”์„œ๋“œ ํƒ์ƒ‰ ์›๋ฆฌ

    • ์ž๋™์ ์ธ ๋ฉ”์‹œ์ง€ ์œ„์ž„ : ์ž์‹ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก๋ฐ›์€ ๊ฒฝ์šฐ ์ƒ์† ๊ณ„์ธต์— ๋”ฐ๋ผ ๋ถ€๋ชจ ํด๋ž˜์Šค์—๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„ํ•œ๋‹ค.
    • ๋™์ ์ธ ๋ฌธ๋งฅ : ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹  ํ–ˆ์„ ๋•Œ ์‹ค์ œ๋กœ ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ ์‹œ์ ์ด ์•„๋‹Œ ์‹คํ–‰ ์‹œ์ ์— ์ด๋ค„์ง€๋ฉฐ, ๋ฉ”์„œ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ๋กœ๋Š” self ์ฐธ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๊ฒฐ์ •ํ•œ๋‹ค.

๐Ÿ“Œ ๋™์ ์ธ ๋ฌธ๋งฅ

public class Lecture {
    public String stats() {
        return String.format("Title: %s, Evaluation Method: %s", title, getEvaluationMethod());
    }

    public String getEvaluationMethod() {
        return "Pass or Fail";
    }
}
  • getEvaluationMethod ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ํ‘œํ˜„ํ–ˆ์ง€๋งŒ ์‚ฌ์‹ค ์ด ๋ง์€ ์ •ํ™•ํ•˜์ง€๋Š” ์•Š๋‹ค.
  • ํ˜„์žฌ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด ํ˜„์žฌ ๊ฐ์ฒดํ•œ ๋ฌด์—‡์ธ๊ฐ€? ๋ฐ”๋กœ self ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋‹ค. ์ด ๊ฐ์ฒด๋Š” ์ฒ˜์Œ์— stats ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ–ˆ๋˜ ๋ฐ”๋กœ ๊ทธ ๊ฐ์ฒด๋‹ค.
public class GradeLecture extends Lecture {
  @Override
  public String getEvaluationMethod() {
      return "Grade";
  }
}
  • GradeLecture ํด๋ž˜์Šค์— stats ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋ฉด Lecture ํด๋ž˜์Šค์˜ stats ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ค‘์— self ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์—๊ฒŒ getEvaluationMethod ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ๊ตฌ๋ฌธ๊ณผ ๋งˆ์ฃผ์น˜๊ฒŒ ๋œ๋‹ค. ์ด์ œ ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์€ self ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์—์„œ ์‹œ์ž‘๋œ๋‹ค. ์—ฌ๊ธฐ์„œ self ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋Š” ๋ฐ”๋กœ GradeLecture์˜ ์ธ์Šคํ„ด์Šค๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€ ํƒ์ƒ‰์€ Lecture ํด๋ž˜์Šค๋ฅผ ๋ฒ—์–ด๋‚˜ self ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” GradeLecture์—์„œ ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘๋œ๋‹ค.

    417, 419 ํŽ˜์ด์ง€ ์ฐธ์กฐ

๐Ÿ“Œ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€

  • ์ •์  ํƒ€์ž… ์–ธ์–ด์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ ์ƒ์† ๊ณ„์ธต ์•ˆ์˜ ํด๋ž˜์Šค๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

  • ๋™์  ํƒ€์ž… ์–ธ์–ด ์—ญ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๋ถ€ํ„ฐ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ์ฐจ์ด์ ์ด๋ผ๋ฉด ๋™์  ํƒ€์ž… ์–ธ์–ด์—๋Š” ์ปดํŒŒ์ผ ๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ํ•ด๋ณด๊ธฐ ์ „์—๋Š” ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค.

    • ๋งŒ์•ฝ ์ƒ์† ๊ณ„์ธต ์•ˆ์˜ ์–ด๋–ค ํด๋ž˜์Šค๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์— ์ด๋ฅด๊ฒŒ ๋˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋˜์ง€๊ฒŒ ๋œ๋‹ค.
    • doesNotUnderstand(์Šค๋ชฐํ† ํฌ)๋‚˜ method_missing(๋ฃจ๋น„) ๋ฉ”์‹œ์ง€์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด์˜ ํŠน์ง•์€ ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜์—ญ์—์„œ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค. ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด์˜ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ์ด์šฉํ•ด ๋„๋ฉ”์ธ-ํŠนํ™” ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹์„ ๋™์  ๋ฆฌ์…‰์…˜์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๐Ÿ“Œ self ๋Œ€ super

  • self ์ฐธ์กฐ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋™์ ์ด๋ผ๋Š” ์ ์ด๋‹ค. self ์ฐธ์กฐ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋ฉ”์„œ๋“œ ์ฐธ์ƒ‰์„ ์œ„ํ•œ ๋ฌธ๋งฅ์„ ์‹คํ–‰ ์‹œ์ ์— ๊ฒฐ์ •ํ•œ๋‹ค.

  • super ์ฐธ์กฐ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ๋ถ€ํ„ฐ ๋ฉ”์„œ๋“œ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

โญ๏ธ ์ƒ์† ๋Œ€ ์œ„์ž„

๐Ÿ“Œ ์œ„์ž„๊ณผ self ์ฐธ์กฐ

  • ๋ฉ”์„œ๋“œ ํƒ์ƒ‰ ์ค‘์—๋Š” ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์™€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ self ์ฐธ์กฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

  • ๋”ฐ๋ผ์„œ ๊ทธ๋ฆผ 12.20์„ ๊ทธ๋ฆผ 12.21๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์† ๊ณ„์ธต์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ์ฒด๋“ค ์‚ฌ์ด์—์„œ self ์ฐธ์กฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋…์ ์œผ๋กœ ๊ฐ ์ธ์Šค ํ„ด์Šค์—์„œ self ์ฐธ์กฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” self๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

    426p ์ฐธ๊ณ 


์ถœ์ฒ˜
์˜ค๋ธŒ์ ํŠธ - ์ฝ”๋“œ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„
https://github.com/eternity-oop/object

0๊ฐœ์˜ ๋Œ“๊ธ€