어느날 갑자기 코드리뷰에 sealed class라는 것이 등장했다.🤔🤔
처음 든 생각은 이게 뭐지?? 처음 본 것인데.. 내가 이렇게 공부를 안했던 거야? 언제 사용하는 것이지?? 바꿔서 달라지는 점이 뭐지?? 하위는 final?? 이게 무엇일까? 라는 의문을 가득 들게 만들었다. 의문점 해결 겸, 공부 겸, 다시 블로그를 쓰자는 올해의 다짐을 이행할 겸 컴퓨터 앞에 앉게 되었다.
자바 17에 나타난 존재였다.. 수민아 공부하자 ㅎ
개념 정리를 하자면
개발자는 코드가 이해가 빠르쥬? (클래스명은 이해해줘요..이름 바꿀꺼다..이름짓는게 너무 어려워!)
이렇게 써주면된다.
단, sealed 타입을 상속한 타입은
Sealed class의 특징을 살펴보자면,
1) 허락하지 않으면 추상화된 클래스에 접근 할 수 없다
2) 광범위하게 접근 가능하지만 광범위하게 확장 가능하지는 못한다.
라고 적혀져 있다. ㅎㅎ 너무 어렵게 표현되어있는데
사실 간단하게 정리하자면, 📍추상화가 필요한 곳 중 구현체를 제한하고 싶을 때 sealed class를 활용하면 된다.
Superclass Accessible, Not Extensible
이 말이 딱 적절한 표현인 듯 싶다.
타당하다고 생각한다.
현재 내가 진행하는 코드는 상위 추상 클래스를 두 클래스가 상속하도록 되어있다. 기존 코드는 이 두 클래스 이외에도 다른 클래스들도 무분별하게 해당 상위 추상클래스를 상속받을 수 있는 구조기 때문에 지정된 클래스만 상속할 수 있도록 제한할 필요성이 있었다. 그런 이유로 sealed 클래스를 적용하라고 리뷰를 달아주신 것 같다. 리뷰를 달아주신 steven님에게 감사의 마음을 표현한다. 문서에서도 sealed class를 사용하는 예시에 대해 잘 이야기하고 있다.
네이밍 어려워요..