[Java] 봉인된 클래스

Bam·2024년 3월 4일
0

Java

목록 보기
39/98
post-thumbnail

봉인된 클래스

봉인된 클래스(sealed class)Java 15에 추가된 클래스로, 자식 클래스의 남발을 막기 위해 사용되는 문법입니다.

기존의 클래스는 final 키워드를 통해서 상속을 막지 않는 이상은 무한대로 상속이 가능했었습니다. 이 과정에서 잘못된 상속 관계를 가질 확률이 있는데요. 이러한 현상을 방지하고 안정적인 상속을 위해 봉인된 클래스를 사용합니다.

봉인된 클래스는 선언부에 sealed 키워드를 붙여서 작성합니다. 그리고 permits 명령 뒤에 상속을 허용할 자식 클래스를 적습니다. 이때 permits에 적혀진 클래스 외에는 봉인된 클래스를 상속할 수 없게 막힙니다.

sealed class 클래스명 permits 상속을_허용할_클래스들 {}

다음은 봉인된 클래스의 예제 코드입니다.

public sealed class Fruit permits Apple {
    public Fruit() {}
}

봉인된 Fruit 클래스는 Apple 클래스만이 상속받을 수 있습니다.


non-sealed

봉인된 클래스를 사용할 땐 상속을 허가받아 상속받은 클래스에도 봉인에 대한 추가 작업을 해주어야합니다.

자식 클래스의 선언부에 올 수 있는 키워드는 final, sealed, non-sealed 세 가지가 있습니다.
위 세가지 키워드 중 하나라도 적지 않는다면 위 사진과 같이 제어자가 없다고 오류를 발생시킵니다.

fianl은 알고있는대로, 더 이상 상속할 수 없는 최종 클래스임을 나타내고, sealed는 해당 클래스를 봉인상태로 유지, non-sealed는 봉인을 해제한다는 의미를 갖습니다. 따라서 상황에 따라 세 가지 중 원하는 키워드를 선택해서 반드시 명시해주어야합니다.

public non-sealed class Apple extends Fruit {
    public Apple() {}
}

0개의 댓글