Dart 언어 오답노트 : 20. Super

샤워실의 바보·2023년 10월 25일
0
post-thumbnail
class Idol {
  final String name;
  final int membersCount;

  Idol({
    required this.name,
    required this.membersCount,
  });

  void sayName() {
    print('저희는 $name입니다.');
  }

  void sayMembersCount() {
    print('$name은/는 $membersCount명의 멤버가 있습니다.');
  }
}

class BoyGroup extends Idol {
  BoyGroup(
    String name,
    int membersCount,
  ) : super(
          name: name,
          membersCount: membersCount,
        );
}

void main() {
  BoyGroup bts = BoyGroup('BTS', 7);
  bts.sayMembersCount();
  bts.sayName();
}

super 키워드는 Dart 프로그래밍 언어에서 하위 클래스(서브클래스)에서 상위 클래스(슈퍼클래스)의 생성자나 메소드에 접근할 때 사용됩니다. 이 경우 BoyGroup 클래스는 Idol 클래스를 상속받기 때문에 IdolBoyGroup의 슈퍼클래스입니다.

Idol 클래스

Idol 클래스는 아이돌 그룹의 기본 정보를 담고 있으며, 이름(name)과 멤버 수(membersCount)를 속성으로 가지고 있습니다. 생성자에서 이 두 속성을 초기화할 수 있도록 설정되어 있습니다.

BoyGroup 클래스

BoyGroup 클래스는 Idol 클래스를 상속받아서 만들어진 서브클래스입니다. BoyGroup 클래스의 생성자는 자신의 이름과 멤버 수를 매개변수로 받아서 super 키워드를 통해 Idol 클래스의 생성자에게 전달합니다.

이때 super(name: name, membersCount: membersCount) 부분은 Idol 클래스의 생성자를 호출하며, namemembersCount를 해당 클래스의 생성자에게 전달합니다. 이렇게 함으로써 BoyGroup 객체를 생성할 때 Idol 클래스의 속성들도 올바르게 초기화됩니다.

main 함수

main 함수에서는 BoyGroup 클래스의 객체를 만들고, 그 객체의 메소드를 사용해서 그룹의 이름과 멤버 수를 콘솔에 출력합니다. BoyGroup 클래스는 Idol 클래스의 모든 메소드를 상속받았기 때문에 sayNamesayMembersCount 메소드를 직접 사용할 수 있습니다.

실행 결과

이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

BTS은/는 7명의 멤버가 있습니다.
저희는 BTS입니다.

요약하자면, BoyGroup 클래스는 Idol 클래스를 상속받아서 만들어진 서브클래스이며, super 키워드를 사용하여 슈퍼클래스인 Idol의 생성자를 호출하고 속성들을 초기화합니다. 이를 통해 BoyGroup 객체를 생성하고 사용할 때 Idol 클래스의 속성들과 메소드들을 사용할 수 있습니다.

profile
공부하는 개발자

0개의 댓글