본문 바로가기

Kotlin

Kotlin - 봉인 클래스와 인터페이스 (Sealed classes and interfaces)

https://kotlinlang.org/docs/sealed-classes.html#sealed-classes-and-when-expression

 

Sealed classes and interfaces | Kotlin

 

kotlinlang.org

봉인 클래스(Sealed class)와 인터페이스는 선언된 패키지나 모듈 외에서 이를 상속하는 것을 방지 할 수 있다. 예로 서드파티 클라이언트는 봉인 클래스를 상속 받을 수 없다. 따라서 소스를 관리하는 관리 주체가 작성한 자식 클래스 외에는 둘 수가 없다. 그렇기 때문에 컴파일러는 해당 봉인 클래스의 자식 클래스로 어떤 클래스 들이 있는지 파악 할 수 있다.

쉽게 설명하면 내가 어떤 라이브러리를 개발하면서 JhException라는 봉인 클래스를 만들고 이를 상속한 다양한 예외 클래스를 선언 했다고 했을때, 내가 작성한 JhException과 그 자식 클래스를 사용자가 상속할 수 없다. 이렇게 했을 경우 Exception 클래스의 타입매칭을 이용해 로직을 구현하더라도 의도치 않은 동작을 기대하기 어렵기때문에 안정성이 향상된다.(고 한다)

 

반응형