Flutter/Dart 문법

[Dart] 상속

Chafle 2023. 3. 22. 14:45
반응형

기본적인 클래스를 생성하자

void main() {
print('--------------------');
  Idol apink = Idol(name: '에이핑크', membersCount: 5);
  
  apink.sayName();
  apink.sayMembersCount();
  
}

class Idol{
  
  String name;
  int membersCount;

  Idol({ // named파라미터로 생성
    required this.name,
    required this.membersCount,
  });
  
  void sayName(){
    print('저는 ${this.name}입니다');
  }
  
  void sayMembersCount(){
    print('${this.name}은 ${this.membersCount}명의 멤버가 있습니다.');
  }
  
}

 

 

만약 Idol을 BoyGroup과 GirlGroup으로 나눠서 Idol클래스를 상속받고자 하면

 

extends를 이용한다.

부모클래스를 지칭하는 것은 super

class BoyGroup extends Idol {
  BoyGroup( //자식클래스는 positional parameter로 생성
    String name, 
    int membersCount, 
  ) : super(// 부모 클래스의 named parameter에 그대로 전달
          name: name,
          membersCount: membersCount,
        ); // Idol Class의 parameter를 의미
}

 

상속받은 BoyGroup은 부모(super)의 모든 속성을 사용할 수 있다.(상속 받았기 때문에)

 

 

void main() {
  print('---------Idol-----------');
  Idol apink = Idol(name: '에이핑크', membersCount: 5);

  apink.sayName();
  apink.sayMembersCount();
  
  BoyGroup bts = BoyGroup('BTS', 7);
print('---------BTS-----------');
  bts.sayMembersCount(); // 자식 클래스에는 sayMembersCount()가 없고 부모 클래스인 Idol에 있다.
  bts.sayName();// 자식 클래스에는 sayName()가 없고 부모 클래스인 Idol에 있다.
}

 

 

 

 

하지만

자식에서 만든 속성은 부모에서 사용할 수 없다.
자식 Class는 Type으로써 부모 Class이기도 하면서 본인 Class이기도 하다

 

 

 

반응형

'Flutter > Dart 문법' 카테고리의 다른 글

[Dart] Static  (0) 2023.03.22
[Dart] 오버라이딩  (0) 2023.03.22
[Dart] Class의 getter와 setter  (0) 2023.03.22
[Dart] 생성자(constructor)  (0) 2023.03.22
[Dart] 함수의 선언 (parameter에 관하여)  (0) 2023.03.21