Sealed Classes
Sealed로 정의된 클래스나 인터페이스는 다른 클래스들이상속하거나구현하는 것을 제한 할 수 있다.
- 서브 클래스로 사용하기에 아주 좋다!
메인 모델링및라이브러리보안 강화에 유용하다.- 모델링 가능성이란? 클래스 계층 구조의 다른 목적은 도메인에 존재하는 다양한 가능성을 모델링하는것!
- 서브(하위) 클래스에 대한 확장을 제한 함으로서 모델링의 보안을 강화한다고 할 수 있다.
sealed Interface
class의 경우와 유사하게 interface에 sealed modifier를 사용하여 interface를 sealed 처리한다.
- superinterface를 지정하기 위한 extends 절 뒤에 implement class와 subinterface가
permits절로 지정된다.
- Java 15의 또 다른 record와 함께 잘 동작한다.
record는 암시적으로 final이므로 record가 있는 sealed 계층을 간결하게 표현할 수 있다.- 간단하게 새로운 데이터 클래스 생성이 가능
- value의 단순한 집계를 표현하는 객체 지향 구조
- programmer가 확장 가능한 동작이 아닌 불변 데이터를 모델링하는데 집중할 수 있도록 도움
- equals와 accessor 같은 data 기반 method를 자동으로 구현
- 기존 방식과 migration 호환성 유지
permits
- 허용되는 타입들만 상속이(implements, extends) 가능하다
- 허용하는 하위 타입 목록 지정
- 하위 타입이 존재해야 함
record도 가능하다.
참고 자료
ADT(algebraic data types)도 사용해 볼 것
FList<T>를 인터페이스를 Cons 와 Empty만 implements나 extends 할 수 있다.






