ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [KOTLIN] Sealed class
    KOTLIN 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")
        }
    }

     

Designed by Tistory.