코드팩토리의 플러터 프로그래밍 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 |