본문 바로가기
카테고리 없음

오공완(with 코드팩토리의 플러터 프로그래밍) #2-2 다트 객체지향 프로그래밍(오버라이드, 인터페이스, 믹스인)

by 또또도전 2024. 7. 8.
반응형

// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.

플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.

오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.

 

  오버라이드, 인터페이스, 믹스인

 

오버라이드: 부모 클래스 또는 인터페이스에 정의된 메서드를 재정의할 때 사용. 다트에서는 override 키워드 생략도 가능.

 

인터페이스: 공통으로 필요한 기능을 정의만 해두는 역할을 한다고.. 인터페이스를 지정하는 키워드는 따로 없음. 그런데 설명 중에 implements 키워드를 사용하면 원하는 클래스를 인터페이스로 사용할 수 있다는 설명은 무슨 의미일까? 상속에서 부모 클래스 개념의 키워드를 지정하는 게 없다는 의미인가? 자식 클래스(물론, 인터페이스에서는 그런 개념이 아니지만)에서 사용할 때 extends 대신에 implements를 쓴다는 의미로 일단, 이해함.

 

 

GirlGroup을 Girlgroup으로 써서 발생한 오타인데, 이걸 찾으려고 몇 시간을 허비한 건지..ㅜ.ㅜ

 

믹스인: 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능

class Idol{
  final String name;
  final int membersCount;
  
  Idol(this.name, this.membersCount);
  
  void sayName(){
    print('저는 $this.name}입니다.');
  }
  
  void sayMembersCount(){
    print('${this.name} 멤버는 ${this.membersCount}명입니다.');
  }
}



mixin IdolSingMixin on Idol{
  void sing(){
    print('${this.name}이 노래를 부릅니다.');
  }
}

class BoyGroup extends Idol with IdolSingMixin{
  BoyGroup(
  super.name,
  super.membersCount,
  );
  
  void sayMale(){
    print('저는 남자 아이돌입니다.');
  }
}

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

 

 

추상: 상속이나 인터페이스로 사용하는 데 필요한 속성만 정의하고 인스턴스화할 수 없도록 하는 기능이란다. (와~ 완전 추상적이다..ㅜ.ㅜ)

 

 

2~3쪽 나가는데, 하루씩 걸리고 있네..ㅜ.ㅜ

일단, 오늘도 여기까지..

반응형