[플러터] sealed

플러터 앱 개발/기타|2023. 5. 12. 15:54
반응형

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

Flutter에서 "sealed"은 상속 계층 구조에서 클래스 계층을 제한하는 데 사용되는 어노테이션입니다.

"sealed" 어노테이션은 특정 클래스를 해당 파일 내에서만 상속 가능하도록 만듭니다. 이를 통해 상속 계층 구조를 더 엄격하게 제어하고 클래스의 안정성을 높일 수 있습니다.

일반적으로 Flutter에서 클래스 계층은 다음과 같이 구성됩니다. 하나의 기본 클래스(superclass)가 있고, 이를 상속한 여러 하위 클래스(subclass)가 존재합니다.

하지만 경우에 따라 특정 클래스를 기반으로 새로운 클래스를 생성하는 것을 방지하고 싶을 수 있습니다.

이럴 때 "sealed" 어노테이션을 사용하여 해당 클래스를 봉인(sealed)할 수 있습니다.

sealed 어노테이션이 적용된 클래스는 다른 파일에서 상속할 수 없으며, 같은 파일 내에서만 상속이 가능합니다.

이를 통해 상속 계층의 깨끗함(cleanliness)과 안정성을 유지할 수 있습니다.

sealed 어노테이션은 코드 유지 관리, 디버깅 및 타입 안정성을 개선하기 위해 사용될 수 있습니다.

 

다음은 sealed 어노테이션의 예시입니다:

import 'package:meta/meta.dart';

@sealed
abstract class Vehicle {
  void start();
  void stop();
}

class Car extends Vehicle {
  @override
  void start() {
    print('Car started');
  }

  @override
  void stop() {
    print('Car stopped');
  }
}

class Bike extends Vehicle {
  @override
  void start() {
    print('Bike started');
  }

  @override
  void stop() {
    print('Bike stopped');
  }
}

위의 예시에서 Vehicle 클래스에 @sealed 어노테이션이 적용되었습니다.

이로 인해 Car 및 Bike 클래스는 같은 파일 내에서만 상속할 수 있습니다.

다른 파일에서 Vehicle 클래스를 상속하려고 하면 컴파일 오류가 발생합니다.

sealed 클래스를 사용하면 상속 계층 구조를 제어하여 코드의 가독성과 유지 관리를 개선할 있습니다.

반응형