스크란샷 2023-05-30 α„‹α…©α„Œα…₯ᆫ 2.40.17.png

였늘 μ΄μ‹œκ°„μ—λŠ” μŠ€νƒ€ν¬λž˜ν”„νŠΈμ— κ΄€λ ¨λœ λ‚΄μš©κ³Ό λ‹€ν˜•μ„±μ— λŒ€ν•΄μ„œ 배울수 μžˆλŠ” μ‹œκ°„μ„ κ°€μ‘ŒμŠ΅λ‹ˆλ‹€.

메딕이 μƒλŒ€λ°© μΉ˜λ£Œκ°€ κ°€λŠ₯ν•˜μ§€λ§Œ μžκ°€μΉ˜λ£ŒλŠ” μ•ˆλΌκ³  또 μΉ˜λ£Œκ°€ λ˜λŠ”κ²Œ 있고 μ—†κ³ β€¦μ΄λ ‡κ²Œλ„ μΉ˜λ£Œν• μˆ˜ 있고 μ €λ ‡κ²Œλ„ μΉ˜λ£Œκ°€ κ°€λŠ₯ν•˜λ‹€λŠ”κ²Œ λ‹€ν˜•μ„±μ΄λΌλ„€μš”.?? γ…Žγ…Ž μ–΄λ ΅λ„€μš”..

λ‹€ν˜•μ„±(polymorphism)

μ–΄λ–€ 것을 μ΄λ ‡κ²Œ λ³Όμˆ˜λ„ 있고 μ €λ ‡κ²Œ λ³Όμˆ˜λ„ μžˆλŠ”κ²ƒμœΌλ‘œ λ‹€ν˜•μ„±μ€ 클래슀 κ°„μ˜ 상속과 관련이 μžˆμŠ΅λ‹ˆλ‹€. λΆ€λͺ¨ν΄λž˜μŠ€λŠ” μžμ‹ν΄λž˜μŠ€μ—κ²Œ 일뢀 κΈ°λŠ₯을 μƒμ†ν•˜λ©΄μ„œ μžμ‹ν΄λž˜μŠ€λŠ” κΈ°λŠ₯을 ν™•μž₯ν• μˆ˜ μžˆλŠ”κ±°μ£ .

class Factory {
  void produce() {
    print('곡μž₯μ—μ„œ μƒμ‚°ν•œλ‹€.');
  }
}

class Kia extends Factory {
  @override
  void produce() {
    print('κΈ°μ•„μ°¨λ₯Ό μƒμ‚°ν•œλ‹€.');
  }
}

class Bmw extends Factory {
  @override
  void produce() {
    print('Bmwμ°¨λ₯Ό μƒμ‚°ν•œλ‹€.');
  }
}

void main() {
  Factory factory = Factory();
  Factory kia = Kia();
  Factory bmw = Bmw();

Factory ν΄λž˜μŠ€λŠ” Kia, Bmw 클래슀의 λΆ€λͺ¨ ν΄λž˜μŠ€μž…λ‹ˆλ‹€. Kia, Bmw ν΄λž˜μŠ€λŠ” Factory 클래슀λ₯Ό 상속받고 있으며 produce() λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œ ν•΄μ„œ μž¬μ •μ˜ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν†΅ν•΄μ„œ μž¬μ‚¬μš©κ³Ό μ½”λ“œμ˜ μœ μ—°μ„±μ„ λ†’μΌμˆ˜ μžˆκ² μŠ΅λ‹ˆλ‹€.

λ‹€ν˜•μ„±μ˜ μž₯μ μœΌλ‘œλŠ” μœ μ—°μ„±, μž¬μ‚¬μš©μ„±, ν™•μž₯성이 μš©μ΄ν• κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ 단점을 μ±—gptμ—κ²Œ λ¬Όμ–΄λ΄€μŠ΅λ‹ˆλ‹€.

λ‹€ν˜•μ„±μ˜ λ‹¨μ μœΌλ‘œλŠ” λ³΅μž‘μ„±: 객체의 μ‹€μ œ νƒ€μž…μ— 따라 λ™μž‘μ΄ λ‹¬λΌμ§ˆμˆ˜ 있고, μ½”λ“œμ˜ 이해와 디버깅이 μ–΄λ €μšΈμˆ˜ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ λ‹€ν˜•μ„±μ€ λŸ°νƒ€μž„μ— λ©”μ„œλ“œ 호좜이 κ²°μ •λ˜μ„œ 동적 λ””μŠ€νŒ¨μΉ˜μ™€ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•œλ‹€κ³  ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 잠깐! 동적 λ””μŠ€νŒ¨μΉ˜ κ²€μƒ‰μ„ν•΄λ³΄λ‹ˆβ€¦ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œμ μ— λ§€μ„œλ“œ 호좜둜 κ²°μ •λ˜λŠ”κ²ƒμ„ μ˜λ―Έν•˜λŠ”λ° λΆ€λͺ¨ν΄λž˜μŠ€μ˜ μ°Έμ‘° λ³€μˆ˜λ₯Ό 톡해 μžμ‹ν΄λž˜μŠ€μ˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œλ° μ‚¬μš©λœλ‹€κ³  ν•©λ‹ˆλ‹€.

그럼 정적 λ””μŠ€νŒ¨μΉ˜λŠ” 무엇인가?? 컴파일 μ‹œμ μ— λ§€μ„œλ“œ 호좜이 κ²°μ •λ˜μ–΄ μ„±λŠ₯이 μš°μˆ˜ν•˜μ§€λ§Œ 동적 λ””μŠ€νŒ¨μΉ˜μ˜ λ‹€ν˜•μ„± μž₯점과 μœ μ—°μ„±μ„ μΆ©λΆ„νžˆ 상쇄해주고 μœ μ§€λ³΄μˆ˜κ°€ κ°€λŠ₯ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν• μˆ˜ μžˆλ‹€κ³  ν•©λ‹ˆλ‹€.

abstract class Factory {
  void makeProduce();
}

// ꡬ체 클래슀
class Kia extends Factory {
  void makeProduce() {
    print("μ‘°λ¦½ν•˜λ‹€!");
  }
}

그리고 λ‹€ν˜•μ„±μ—μ„œ 좔상적인 μ„ μ–Έ = new 상세 μ •μ˜λΌλŠ” 말은 곡μž₯은 μƒμ‚°ν• μˆ˜ μžˆμ§€λ§Œ μ–΄λ–€ 곡μž₯인지 μ•Œμˆ˜κ°€ μ—†κ³  μ΄λ•Œ μΆ”μƒν΄λž˜μŠ€λŠ” 곡μž₯이고 makeProduceλΌλŠ” μΆ”μƒλ©”μ„œλ“œλ₯Ό κ°€μ§€κ³  μžˆλ‹€λ©΄β€¦.

κΈ°μ•„λŠ” 곡μž₯을 μƒμ†λ°›λŠ” ν΄λž˜μŠ€μ΄κ³ β€¦ makeProduce λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œλ‹€.. 곡뢀λ₯Ό ν•˜λ©΄μ„œ 생각해보면 λ‹€ν˜•μ„±μ΄λΌλŠ”κ²Œ 정말 μž¬μ‚¬μš©μ„±μ΄ λ†’κ² κ΅¬λ‚˜ μ‹Άλ„€μš”. μΈν„°νŽ˜μ΄μŠ€μ— λ„£κ³  μ„œλ‘œ λ™μΌν•œ νƒ€μž…λΌλ¦¬ λ¬Άκ³  κ΄€λ¦¬ν•˜κ³ β€¦ 곡뢀가 많이 ν•„μš”ν•΄λ³΄μž…λ‹ˆλ‹€.

λμœΌλ‘œβ€¦

Dartκ³΅λΆ€ν•˜λ©΄μ„œ μ—¬λŸ¬λ²ˆ 문법정리 μ˜μƒ 및 곡뢀λ₯Όν•΄λ„.. μ˜€μ€€μ„ μ„ μƒλ‹˜μ˜ μ—°μŠ΅λ¬Έμ œλ₯Ό 보면 숨이 턱… μ–΄λ ΅μŠ΅λ‹ˆλ‹€β€¦κ·Όλ° μ΄μƒν•˜κ²Œ μ‘°κΈˆμ”© ν•˜λ‹€λ³΄λ©΄ λ­”κ°€ μž¬λ°ŒμŠ΅λ‹ˆλ‹€. 사싀 μ΄λ²ˆμ£ΌκΉŒμ§€ 과제 제좜이고 λ‹€μŒμ£ΌλŠ” κΈ°λ§μ‹œν—˜μ΄λΌμ„œ λ©€ν‹°κ°€ λ˜μ§€ μ•ŠλŠ”κ²Œ λ‹¨μ μ΄μ§€λ§Œ.. μ˜€μ€€μ„ μ„ μƒλ‹˜ κ°•μ˜λ₯Ό λ“£κ³  ν•΄κ²°ν•˜μ§€ λͺ»ν•œ 뢀뢄이 이해가됀닀면 μ•½κ°„ μ΄μƒν•˜κ²Œ λ­”κ°€ λ“μ—¬μ˜€λ₯΄λŠ”λ°.. 기뢄이 μ’‹κ³ β€¦μ œκ°€ 쑰금 미쳐가고 μžˆλŠ”κ²ƒ κ°™λ„€μš”β€¦ γ…Žγ…Ž