๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฅ– Bread Basics/Flutter

OOP์˜ ์ƒ์†!!

by BreadDev 2025. 4. 24.
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