Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- textfield
- ProGuard
- 프로그래머스
- AWS
- Hilt
- 코드포스
- MyVoca
- livedata
- Kotlin
- 코루틴
- GitHub
- Codeforces
- Rxjava
- Compose
- boj
- activity
- 백준
- android
- MiTweet
- architecture
- Coroutine
- Python
- 쿠링
- Coroutines
- relay
- androidStudio
- TEST
- 암호학
- pandas
- Gradle
Archives
- Today
- Total
이동식 저장소
[Kotlin] sealed class vs. enum class 본문
Kotlin을 처음 배울 때는 ``enum class``와 ``sealed class``를 혼동하곤 했다.
enum을 구현할 떄 ``enum class`` 대신 ``sealed class``를 써도 되지 않나?
결론
``sealed class``를 써도 되지만, 바람직한 사용법은 아니다.
왜?
``enum class``가 왜 적합한지는 설명 안 해도 되겠지? 이제 ``sealed class``의 바람직한 사용 예시를 설명하려 한다.
``sealed class``는 클래스가 정의된 블럭 안에서만 상속될 수 있으며, 외부에서의 상속을 허용하지 않는다.
sealed class Animal {
// Animal은 이 안에서만 상속될 수 있다.
class Cat: Animal
class Dog: Animal
}
// ERROR: 여기서는 상속될 수 없다.
class Salmon: Animal
위의 예시처럼 말 그대로 ``Animal``이 선언된 블럭 안에서만 상속될 수 있다.
``sealed class``을 사용하면 ``나만 상속받을 수 있는`` 클래스를 작성할 수 있다. 상속을 통해 깔끔한 코드를 작성하는 동시에 외부에서 건드릴 수 없는 클래스 위계를 구현하는 것이다.
enum을 구현하는 데 쓰기에는 너무 심오한 개념이지 않은가? 아니라고? 아님 말고..
참고
'Primary > Kotlin' 카테고리의 다른 글
[Kotlin] Coroutine 테스트 디버깅 후기 (0) | 2022.07.30 |
---|---|
Kotlin Immutable Collections (0) | 2022.07.29 |
[Kotlin] value class로 값을 감싸보자 (0) | 2022.06.17 |
[Kotlin] 클래스 안에 확장 함수? (0) | 2022.06.16 |
[Kotlin] 함수 타입 상속받기 (0) | 2022.06.16 |
Comments