void main() {
print('------- Idol -------');
Idol apink = Idol(name: '에이핑크', membersCount: 5);
apink.sayName();
apink.sayMembersCount();
print('-------- Boy Group --------');
BoyGroup bts = BoyGroup('BTS', 7);
bts.sayMembersCount();
bts.sayName();
bts.sayMale(); // 자식클래스 BoyGroup에만 있는 메소드
print('-------- Girl Group --------');
GirlGroup redVelvet = GirlGroup('Red Velvet', 5);
redVelvet.sayMembersCount();
redVelvet.sayName();
redVelvet.sayFemale(); // 자식클래스 GirlGroup에만 있는 메소드
print('-------- Type Comparison : apink(부모) --------');
print(apink is Idol); // true
print(apink is BoyGroup); // false
print(apink is GirlGroup); // false
print('-------- Type Comparison : bts(자식1) --------');
print(bts is Idol); // true
print(bts is BoyGroup); // true
print(bts is GirlGroup); // false
print('-------- Type Comparison : redVelvet(자식2) --------');
print(redVelvet is Idol); // true
print(redVelvet is BoyGroup); // false
print(redVelvet is GirlGroup); // true
}
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('저는 여자 아이돌입니다.');
}
}