void main() {
  BoyGroup bts = BoyGroup('BTS');
  GirlGroup redVelvet = GirlGroup('레드벨벳');
  
  bts.sayName(); // 제 이름은 BTS 입니다.
  redVelvet.sayName(); // 제 이름은 레드벨벳 입니다.
  
  print(bts is IdolInterface); // true
  print(bts is BoyGroup); // true
  print(bts is GirlGroup); // false
  
  print(redVelvet is IdolInterface); // true
  print(redVelvet is BoyGroup); // false
  print(redVelvet is GirlGroup); // true
  
}

// interface
abstract class IdolInterface { // 인스턴스화 불가
  String name;

  IdolInterface(this.name);

  void sayName();
}

//interface의 속성과 메서드 강제
class BoyGroup implements IdolInterface {
  String name;
  
  BoyGroup(this.name);
  
  void sayName() {
    print('제 이름은 $name 입니다.');
  }
}

class GirlGroup implements IdolInterface {
  String name;
  
  GirlGroup(this.name);
  
  void sayName() {
    print('제 이름은 $name 입니다.');
  }
}