πŸ₯– Bread Basics/Flutter

OOP의 상속!!

BreadDev 2025. 4. 24. 17:25
728x90
https://www.inflearn.com/course/dart-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8

 

λ¨Όμ € ν˜„μž¬ [μ½”λ“œνŒ©ν† λ¦¬] [μž…λ¬Έ] Dart μ–Έμ–΄ 4μ‹œκ°„λ§Œμ— 완전정볡을 λ“£κ³ μžˆλŠ”λ°

 

상속에 λŒ€ν•΄ μ½”λ“œλ₯Ό κ³΅λΆ€ν•œκ²Œ μžˆλŠ”λ° μ—†μ• λ©΄ μ•„μ‰¬μšΈκ±°κ°™μ•„ λ‚¨κΉ€λ‹ˆλ‹€. 이 μ½”λ“œλ§Œ 보면 상속에 λŒ€ν•΄ ν™•μΈν• μˆ˜μžˆμ–΄μš”!

 

void main() {
  print('---------------Idol---------------------');
  Idol apink = Idol(name: '에이핑크', membersCount: 5);
  apink.sayName();
  apink.sayMembersCount();
  
  BoyGroup bts = BoyGroup('BTS', 7);
  
  print('---------------BoyGroup---------------------');
  bts.sayMembersCount();
  bts.sayName();
  bts.sayMale();
  print('---------------GirlGroup---------------------');
  GirlGroup redVelvet = GirlGroup('Red Velvet', 5);
  redVelvet.sayMembersCount();
  redVelvet.sayName();
  redVelvet.sayFemale();
  print('---------------apink Comparison---------------------');
  print(apink is Idol);
  print(apink is BoyGroup);
  print(apink is GirlGroup);
  print('---------------bts Comparison2---------------------');
  print(bts is Idol);
  print(bts is BoyGroup);
  print(bts is GirlGroup);
  print('---------------redVelvet Comparison3---------------------');
  print(redVelvet is Idol);
  print(redVelvet is BoyGroup);
  print(redVelvet is GirlGroup);
}

class Idol {
  String name;
  int membersCount;
  
  Idol({
    required this.name,
    required this.membersCount,
  });
  
  void sayName() {
    print('μ €λŠ” ${this.name}μž…λ‹ˆλ‹€.');
  }
  
  void sayMembersCount() {
    print('${this.name}은 ${this.membersCount}λͺ…μ˜ 멀버가 μžˆμŠ΅λ‹ˆλ‹€.');
  }
}

class BoyGroup extends Idol {
  BoyGroup(
    String name,
    int membersCount,
  ): super(name: name, membersCount: membersCount);
  
  void sayMale() {
    print('μ €λŠ” λ‚¨μžκ·Έλ£Ήμž…λ‹ˆλ‹€.');
  }
}

class GirlGroup extends Idol {
  GirlGroup(
    String name,
    int membersCount,    
  ): super(name: name, membersCount: membersCount);
  
  void sayFemale() {
    print('μ €λŠ” μ—¬μžκ·Έλ£Ήμž…λ‹ˆλ‹€.');
  }
}
---------------Idol---------------------
μ €λŠ” μ—μ΄ν•‘ν¬μž…λ‹ˆλ‹€.
에이핑크은 5λͺ…μ˜ 멀버가 μžˆμŠ΅λ‹ˆλ‹€.
---------------BoyGroup---------------------
BTS은 7λͺ…μ˜ 멀버가 μžˆμŠ΅λ‹ˆλ‹€.
μ €λŠ” BTSμž…λ‹ˆλ‹€.
μ €λŠ” λ‚¨μžκ·Έλ£Ήμž…λ‹ˆλ‹€.
---------------GirlGroup---------------------
Red Velvet은 5λͺ…μ˜ 멀버가 μžˆμŠ΅λ‹ˆλ‹€.
μ €λŠ” Red Velvetμž…λ‹ˆλ‹€.
μ €λŠ” μ—¬μžκ·Έλ£Ήμž…λ‹ˆλ‹€.
---------------Type Comparison---------------------
true
false
false
---------------Type Comparison2---------------------
true
true
false
---------------Type Comparison3---------------------
true
false
true