티스토리 뷰
반응형
Sealed Class (실드 클래스) ?
- 값이 제한된 집합의 유형 중 하나를 가질수 있지만 다른 유형을 가질 수 없는 제한된 클래스 계층 구조를 나타내는데 사용
- Sealed 클래스는 하위 클래스를 가질수 있지만 동일한 파일에서 선언해야합니다.
- Sealed 클래스는 추상 클래스이며 직접 인스턴스화 할수 없고 추상 멤버를 가질수 있음
- 생성자는 기본적으로 private고 다른 접근 제한자를 가질수 없음
- Sealed 클래스의 이점은 when문 사용 시 else절이 필요없음
인터페이스 방식
interface CmdInterface {fun execute()}
class Add() : CmdInterface {override fun execute() {}}
class Delete() : CmdInterface {override fun execute() {}}
fun eval(controller: CmdInterface) =
when (controller) {
is Add -> "추가 완료"
is Delete -> "삭제 완료"
else -> "실패" // else절 강제
}
Sealed 클래스 방식
sealed class CmdSealed {abstract fun execute()}
class Add() : CmdSealed() {override fun execute() {}}
class Delete() : CmdSealed() { override fun execute() {}}
fun eval(controller: CmdSealed) =
when (controller) {
is Add -> "추가 완료"
is Delete -> "삭음제 완료"
// else절 필요 없
}
sealed class CmdSealed {
class Add() : CmdSealed() {fun execute() {}}
class Delete() : CmdSealed() { fun execute() {}}
}
fun eval(controller: CmdSealed) =
when (controller) {
is CmdSealed.Add -> "추가 완료"
is CmdSealed.Delete -> "삭제 완료"
}
위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다.
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 2. 코틀린 함수 정의하기
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 5. 코틀린 조건식 if, when, switch 문 사용하기
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 6. 코틀린 object, any, is, instancedof 타입검사 및 형변환
2019/05/22 - [Kotlin] - 코틀린 기초 문법) 10. 코틀린 클래스와 생성자, init 키워드 알아보기
2019/05/23 - [Kotlin] - 코틀린 기초 문법) 11. 코틀린 상속, open 키워드 알아보기
2019/05/24 - [Kotlin] - 코틀린 기초 문법) 12. 코틀린 오버라이딩, 오버로딩 알아보기
2019/05/25 - [Kotlin] - 코틀린 기초 문법) 15. 코틀린 추상 클래스 및 인터페이스
반응형
'Kotlin' 카테고리의 다른 글
18. 코틀린 Enum Class(열거형 클래스) 알아보기 (0) | 2019.05.30 |
---|---|
17. 코틀린 inner(내부) 클래스 및 중첩 클래스 (0) | 2019.05.28 |
코틀린 기초 문법) 15. 코틀린 추상 클래스 및 인터페이스 (0) | 2019.05.25 |
코틀린 기초 문법) 14. 코틀린 lateinit, 속성 참조(더블 콜론 ::) (0) | 2019.05.25 |
코틀린 기초 문법) 13. 코틀린 const (컴파일 타임 상수) (0) | 2019.05.25 |
댓글
최근에 올라온 글
최근에 달린 댓글