Develop/Kotlin

[Kotlin] enum와 sealed class

JunJangE 2024. 2. 26. 00:27

Enum class가 뭐야? 🤔

enum class는 상수, 상태값 등 유사한 값을 열거형으로 정의하는 클래스이다. 주로 고유한 값을 사용할 때 활용된다.
  • Enum class는 상수, 상태값 등 유사한 값을 열거형 클래스로 정의하여 고유한 값으로 사용할 때 주로 활용된다.
  • Enum class는 생성자, 프로퍼티, 메서드, 인스턴스, 변수 등을 가질 수 있다.
  • 일반적으로 생성자를 명시적으로 선언하지 않으면 자동으로 디폴트 생성자가 생성된다.
  • Enum class는 상속 해줄 수 없으며, 상속 받을 수도 없다.

Sealed class가 뭐야? 🤔

sealed class는 특정 유형의 하위 클래스를 제한하는 데 사용하는 클래스이다. 주로 패턴 매칭과 같은 작업에 유용하다.

*패턴 매칭 : 특정한 패턴을 찾아서 해당하는 동작을 수행하는 기능

  • Sealed class는 특정 유형의 하위 클래스를 제한하는 데 사용된다.
  • 이 클래스 자체로는 추상 클래스처럼 동작하며, 일반적으로 그것의 하위 클래스를 가진다.
  • 이 하위 클래스는 sealed 클래스를 정의하는 파일 안에 있어야 하며, sealed 클래스는 동일한 파일 내의 다른 위치에 있는 하위 클래스를 가질 수 없다.
  • Sealed class를 사용하면 유형을 나타내는 클래스 계층 구조를 정의할 때 특정 유형의 하위 클래스를 열거할 수 있다. 이는 패턴 매칭과 같은 작업에 유용하다.
  • sealed 클래스의 하위 클래스는 sealed 클래스 자체나 하위 클래스에 대해 패턴 매칭을 수행할 때 컴파일러가 경고하지 않는다.

Enum class와 Sealed class 차이가 뭐야? 🤔

enum class는 한정된 상수 집합을 정의하며, 각 상수는 단순한 고유한 값으로만 구성된다. 반면에 sealed class는 상속을 통한 계층적인 구조를 정의하고 각 하위 클래스가 고유한 속성과 동작을 가질 수 있다.

따라서 사용하는 상황에 따라 적절한 클래스를 선택해야 한다. 예를 들어, 상태를 표현하고 각각의 상태가 다른 속성 및 동작을 가져야 하는 경우 sealed class를 사용할 수 있다. 반면에, 고유한 값으로 한정된 상수 집합을 나타내고자 할 때는 enum class를 사용할 수 있다.

'Develop > Kotlin' 카테고리의 다른 글

[Kotlin] 확장 함수  (0) 2024.04.03
[Kotlin] Data class  (0) 2024.04.03
[kotlin] Android 4대 컴포넌트  (2) 2023.08.30
[kotlin] 코틀린 기본 문법  (0) 2022.12.06
[kotlin] 객체 지향 프로그래밍  (0) 2022.12.05