-
[KOTLIN] Sealed classKOTLIN 2022. 6. 9. 16:11
코루틴으로 프로젝트를 만드는 중 best practice 예제인 https://github.com/google/iosched 를 참고하던 중 seald class가 등장하여 블로그에 글을 적게 되었습니다.
SeladClass란?
Sealed class는 Super class를 상속받는 Child 클래스의 종류 제한하는 특성을 갖고 있는 클래스입니다. 어떤 클래스를 상속받는 하위 클래스는 여러 파일에 존재할 수 있기 때문에 컴파일러는 얼마나 많은 하위 클래스들이 있는지 알지 못합니다. 하지만 Sealed class는 동일 파일에 정의된 하위 클래스 외에 다른 하위 클래스는 존재하지 않는다는 것을 컴파일러에게 알려주는 것과 같습니다.
즉, A class가 다른 B, C ,D 등의 class들에 상속 될 때, 컴파일러는 A 클래스가 얼마나 많이 상속되고 있는지 모른다. 하지만 selead class를 사용하면 A 클래스 내부에 있는 클래스들에만 상속 가능하고 다른 외부의 다른 클래스는 A를 상속 받을 수 없다. 이는 컴파일러의 성능 향상에 도움이 된다.
상위 클래스와 하위 클래스
// Parent는 상위 클래스 Child는 하위 클래스 class Parent { } class Child : Parent { }sealed class
sealed class ExampleSealedClass { class NormalClass(normal: String) : ExampleSealedClass() { override fun printHello() { super.printHello() } } data class DataClass(val data: String) : ExampleSealedClass() { override fun printHello() { super.printHello() } } object NormalObject : ExampleSealedClass() { override fun printHello() { super.printHello() } } open fun printHello() { print("hello") } }'KOTLIN' 카테고리의 다른 글
[KOTLIN] data class (0) 2022.09.20 [KOTLIN] SimpleDateFormat Date->String, String->Date (0) 2022.07.09 [KOTLIN] @JvmOverloads 어노테이션 (0) 2022.06.01 [ANDROID] Recycler View의 absoluteAdapterPosition vs getBindingAdapterPosition (0) 2022.01.12