minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️셸 스크립트 (0)
    • ◼️SQL (0)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • hello테마
  • NextJSSwagger
  • 리눅스파티션
  • mfc
  • 이것이C++이다책참고
  • 그램업그레이드
  • GSLB
  • 19년식그램램장착
  • SpringBootSwagger
  • 구조체매개변수
  • 티스토리폰트배경색없애기
  • AI배워야하나
  • OpenGL회전
  • 인공지능개발자
  • 이차원구조체배열포인터
  • 19년식그램SSD장착
  • kafka구축
  • 구조체배열포인터
  • 그램풀스팩업그레이드
  • API문서정리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️Flutter

[Flutter Dart] 클래스 - mixin 클래스, with 혼합

2025. 1. 25. 07:39

코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다.

 

 


📌 mixin 클래스,  with 혼합

믹스인 클래스를 혼합(with)하여 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능
클래스 상속은 하나만 받을 수 있지만, 믹스인 클래스는 여러개 혼합(with)가능하다.

- class를 상속받듯 믹스인 클래스를 상속받을 수 있다.
- 믹스인 클래스의 인스턴스 생성은 불가능하다.
- 믹스인클래스에 on 키워드로 특정 클래스를 상속받은 클래스에만 사용하도록 제한할 수 있다.

믹스인에서는
- 일반 클래스를 자식클래스에 상속(extends)한다고 하는 것을
- 믹스인 클래스를 다른 클래스에 혼합(with)한다고 표현한다.
//믹스인 클래스
mixin Person1{
    final name = '제니';
    void sing(){
    }
}

//믹스인 클래스
mixin Company1{
    final name = '네이버';
    void sing(){
    }
}

//믹스인 클래스를 혼합 (, 로 다중혼합)
class Person2 with Person1, Company1{
	
    void printName(){
    	print(this.name);
    }    
}

class Person3{
    final name='제니';
    void sing(){}
}

mixin Person4 on Person3{
    final name = '로제';
}

//Person4는 Person3을 상속받은 클래스에만 사용할 수 있다.
class Person5 extends Person3 with Person4{
}


//에러!! Person3을 상속받지 않았으므로 사용 불가
class Person6 with Person4{
}

 

 

📌 mixin 클래스 사용사례

case 1. 공통 동작 추가

-  여러 클래스에 공통 동작을 추가하는 데 적합

- 예를 들어, Logger 기능을 여러 클래스에 적용할 수 있다.

mixin Logger {
  void log(String message) {
    print("[LOG]: $message");
  }
}

class FileManager with Logger {
  void readFile() {
    log("Reading file...");
  }
}

class DatabaseManager with Logger {
  void connect() {
    log("Connecting to database...");
  }
}

 

case 2. 공통 상태를 관리

mixin Counter {
  int count = 0;

  void increment() => count++;
  void decrement() => count--;
}

class ShoppingCart with Counter {
  void addItem() {
    increment();
    print("Items in cart: $count");
  }
}

class Scoreboard with Counter {
  void scoreGoal() {
    increment();
    print("Score: $count");
  }
}

 

 

 

#코드팩토리의플러터프로그래밍2판 #공부용

'◼️Flutter' 카테고리의 다른 글

[Flutter Dart] 제네릭 타입 - 객체지향의 꽃 <T>  (0) 2025.01.25
[Flutter Dart] 클래스 - 추상 클래스 'abstract' 키워드  (0) 2025.01.25
[Flutter Dart] 클래스 - 인터페이스로 사용 implements  (0) 2025.01.25
[Flutter Dart] 클래스 - 오버라이드 @override  (0) 2025.01.25
[Flutter Dart] 클래스 - 상속 extends, override  (0) 2025.01.25

    티스토리툴바