본문 바로가기
개발일지/임시카테고리

dart(다트) - class(클래스) 상속 2

by 다니엘의 개발 이야기 2025. 3. 24.
320x100
void main() {
  print('---- Idol ----');
  Idol apink = Idol(name: '에이핑크', membersCount:5);
  
  apink.sayName();
  apink.sayMembersCount();
  
  print('---------BTS------');
  BoyGroup bts = BoyGroup('BTS', 7);
  
  bts.sayMembersCount();
  bts.sayName();
  bts.sayMale();
  
  print('---------red velet--------');
  
  GirlGroup redVelbet = GirlGroup('Red Velbet', 5);
  
  redVelbet.sayMembersCount();
  redVelbet.sayName();
  redVelbet.sayFemale();
  
  print('------------ Type Comparison -------------');
  print(apink is Idol);
  print(apink is BoyGroup);
  print(apink is GirlGroup);
}

// 상속 - inheritance
// 상속을 받으면 부모 클래스의 모든 속성을 자식 클래스가 부여받는다.

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
  ): 
  // 피상속자는 this 대신 super를 사용한다.
  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('저는 여자 아이돌 입니다.');
  }
}
300x250