"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java로 봉인된 클래스 마스터하기

Java로 봉인된 클래스 마스터하기

2024-08-07에 게시됨
검색:470

Mastering Sealed Classes in Java

Java 15에서 미리보기 기능으로 도입되고 Java 17에서 영구적으로 제공되는 봉인된 클래스를 사용하면 개발자가 확장하거나 구현할 수 있는 클래스를 제어할 수 있습니다. 이 기능은 작지만 강력한 기능으로 Java 언어를 향상시켜 개발자 생산성을 향상시키는 것을 목표로 하는 Project Amber의 일부입니다.

봉인 클래스란 무엇입니까?

봉인된 클래스는 자신을 확장하거나 구현할 수 있는 다른 클래스나 인터페이스를 제한하는 새로운 종류의 클래스입니다. 이는 보다 강력하고 유지 관리 가능한 유형 계층 구조를 제공하기 위해 수행됩니다. 봉인 클래스를 정의할 때 허용되는 하위 클래스 세트를 지정합니다.

봉인 수업의 장점

  1. 제어된 상속: 봉인 클래스를 확장할 수 있는 클래스를 지정하면 클래스 계층 구조를 더 효과적으로 제어할 수 있으며 클래스 계층 구조를 잘 정의하고 유지 관리하기 쉽게 유지할 수 있습니다.
  2. 철저한 패턴 일치: 봉인된 클래스는 패턴 일치 기능과 잘 작동하므로 컴파일러는 가능한 모든 사례가 포함되는지 확인할 수 있습니다.
  3. 향상된 가독성 및 유지 관리성: 명확하게 정의된 상속 구조는 코드 가독성과 유지 관리성을 향상시킵니다.

봉인 클래스 정의

봉인된 클래스를 정의하려면 봉인된 키워드를 사용하고 allowed 절로 허용되는 하위 클래스를 지정합니다. 예는 다음과 같습니다.

public sealed class Shape permits Circle, Rectangle, Square {
    // class body
}

public final class Circle extends Shape {
    // class body
}

public final class Rectangle extends Shape {
    // class body
}

public final class Square extends Shape {
    // class body
}

이 예에서 Shape는 봉인된 클래스이며 Circle, Rectangle 및 Square만 확장할 수 있습니다. 각 하위 클래스는 최종, 봉인 또는 봉인되지 않아야 합니다.

봉인된 클래스 사용

봉인된 클래스는 하위 클래스 집합이 알려져 있고 고정되어 있는 계층 구조를 모델링하는 데 사용할 수 있습니다. 이는 도메인 모델링 및 대수 데이터 유형으로 작업할 때 특히 유용합니다.

다음은 패턴 일치와 함께 봉인 클래스를 사용하는 예입니다.

public class SealedClassExample {
    public static void main(String[] args) {
        Shape shape = new Circle(5);

        String result = switch (shape) {
            case Circle c -> "Circle with radius "   c.radius();
            case Rectangle r -> "Rectangle with width "   r.width()   " and height "   r.height();
            case Square s -> "Square with side "   s.side();
        };

        System.out.println(result);
    }
}

이 예에서는 스위치 표현식을 사용하여 다양한 유형의 Shape를 처리합니다. Shape가 봉인되어 있기 때문에 컴파일러는 가능한 모든 경우가 포함되도록 보장할 수 있습니다.

결론

봉인된 클래스는 Java에 추가된 강력한 기능으로, 클래스 계층 구조에 대한 더 나은 제어를 제공하고 코드 가독성과 유지 관리성을 향상시킵니다. Sealed 클래스를 사용하면 Java 애플리케이션에서 더욱 강력하고 잘 정의된 유형 시스템을 만들 수 있습니다.

릴리스 선언문 이 글은 https://dev.to/adaumircosta/mastering-sealed-classes-in-java-3md?1에서 복제되었습니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3