[Flutter / Dart] 다트 3.0 신규 문법 (클래스 제한자)
다양한 클래스 제한자가 새로 추가됨.
추가된 클래스 제한자는 `base`, `final`, `interface,` `sealed`, `mixin`임. 모든 클래스 제한자는 `class`키워드 앞에 명시함.
클래스 제한자를 명시한 클래스를 해당 클래스를 사용하는 파일이 아닌 다른 파일에 선언해야 정상적으로 기능이 작동함
1. `base`제한자
`base`제한자는 `base`클래스의 기능을 강제하는 제한자임. `base` 클래스를 상속할 때는 다른 파일에서 상속하려면 자식 클래스도 반드시 `base`, `sealed`, `final` 중 하나여야 함. 또한, `implements`는 불가능함.
// base 제한자
base class Parent{} // a파일
import "1_a.dart"; // b파일
Parent parent = Parent();
// 가능
base class Child extends Parent{}
// 에러 발생
// base / sealed / final 제한자 중 하나가 필요함
class Child2 extends Parent{}
// 에러 발생
// base 클래스는 implement가 불가능
class Child3 implements Parent{}
2. `final` 제한자
- `final` 클래스를 상속하거나 구현하는 건 어디서든 불가능함 (같은 파일에서도 ❌)
- 즉, 확장 금지 클래스로 완전히 봉인됨.
// final 제한자
final class Parent{} // a파일
import "2_a.dart"; // b파일
// 인스턴스화 가능
Parent parent = Parent();
// extends불가능
class Child extends Parent{};
// implement 불가능
class Child2 implements Parent{};
3. `interface` 제한자
- `interface` 클래스는 `extends` 불가, `implements`는 가능
- 즉, 순수 인터페이스 역할만 수행 가능
// interface 제한자
interface class Parent{} // a파일
import "3_a.dart"; // b파일
// 인스턴스화 가능
Parent parent = Parent();
// extend 불가능
class Child1 extends Parent{}
// implement 가능
class Child2 implements Parent{}
4. `sealed`제한자
- `sealed` 클래스는 같은 파일 안에서만 상속/구현 가능
- 다른 파일에서 확장하려고 하면 에러 발생
// sealed 제한자
sealed class Parent{} // a파일
import "4_a.dart"; // b파일
// 인스턴스화 불가능
Parent parent = Parent();
// extend 불가능
class Child1 extends Parent {}
// implement 불가능
class Child2 implements Parent {}
5. `mixin`제한자
- `mixin class`는 `mixin`처럼 기능을 공유하면서도 상속(extends)도 가능한 하이브리드 구조
- 기존 `mixin`은 `extends` 불가지만, `mixin class`는 가능
// mixin 제한자
mixin class MixinExample{}
// extend 가능
class Child1 extends MixinExample{}
// mixin으로 사용 가능
class Child2 with MixinExample{}
6. 총정리!
제한자 | extend | implements | 외부 확장 가능 | 인스턴스 생성 | 설명 요약 |
base | ✅ | ❌ | 자식도 제한자 필요 | ✅ | 상속만 가능, 구현 불가 |
final | ❌ | ❌ | ❌ | ✅ | 완전히 봉인 |
sealed | ✅ | ✅ | ❌ (같은 파일만) | ❌ | 상속 제한 + switch에 유리 |
interface | ❌ | ✅ | ✅ | ✅ | 순수 인터페이스 |
mixin | ❌ | ✅ (with만) | ✅ | ❌ | 다중 기능 조합용 |
mixin class | ✅ | ✅( | ✅ | ✅ | mixin + 클래스 성질 |
https://github.com/Leedoseo/Flutter_Dart_3.0/tree/main
GitHub - Leedoseo/Flutter_Dart_3.0
Contribute to Leedoseo/Flutter_Dart_3.0 development by creating an account on GitHub.
github.com
https://www.notion.so/Dart-Flutter-1cf9fd9f157980a5ab7efad394810871?pvs=4
Dart / Flutter | Notion
Made with Notion, the all-in-one connected workspace with publishing capabilities.
www.notion.so
출처 : 코드팩토리의 플러터 프로그래밍
'Dart 언어' 카테고리의 다른 글
[Flutter / Dart] 다트 3.0 신규 문법 (Switch문) (0) | 2025.04.11 |
---|---|
[Flutter / Dart] 다트 3.0 신규 문법 (구조 분해) (0) | 2025.04.11 |
[Flutter / Dart] 다트 3.0 신규 문법 (레코드) (0) | 2025.04.11 |
[Flutter / Dart] 비동기 프로그래밍 (0) | 2025.04.09 |
[Flutter / Dart] 객체지향 프로그래밍(스태틱과 캐스케이드 연산자) (1) | 2025.04.08 |