>Java >java지도 시간 >Java의 봉인된 클래스 규칙

Java의 봉인된 클래스 규칙

Patricia Arquette
Patricia Arquette원래의
2024-10-08 22:12:31877검색

Sealed class rules in Java

봉인된 클래스는 Java 버전 15 이상에 도입된 새로운 기능으로, 모듈 내의 클래스 상속에 대한 더 많은 제어와 유연성을 제공하도록 설계되었습니다. 봉인된 클래스는 하위 클래스에 특정 제약 조건을 부과하여 제한적이고 조직화된 클래스 계층 구조를 허용합니다.

시작하려면 봉인된 클래스와 해당 하위 클래스가 동일한 모듈에 속해야 하며, 이름이 지정되지 않은 모듈에 선언된 경우 동일한 패키지에 속해야 합니다. 이렇게 하면 봉인된 클래스 계층 구조 내의 모든 클래스에 특정 환경 내에서 액세스하고 관리할 수 있습니다.

또한 허용된 모든 하위 클래스는 봉인 클래스를 직접 확장해야 합니다. 이렇게 하면 예상치 못한 방식으로 하위 클래스가 분기되지 않고 명확하고 간결한 계층 구조가 보장됩니다.

다음으로, 허용된 모든 하위 클래스는 상위 클래스에 의해 시작된 봉인을 계속하는 방법을 설명하는 수정자를 선택해야 합니다. 이러한 수정자에는 세 가지 옵션이 있습니다.

1) 최종: 이 수정자는 하위 클래스를 클래스 계층 구조의 최종 수준으로 만들어 더 이상의 확장을 금지합니다.

2) 봉인됨: 이 수정자는 하위 클래스를 더 확장할 수 있도록 허용하지만 제한된 방식으로 이루어집니다. 봉인된 하위 클래스의 모든 하위 클래스는 봉인된 슈퍼클래스에서 명시적으로 허용되어야 합니다.

3) 봉인되지 않음: 이 수정자는 계층 구조의 하위 클래스 부분을 공개 상태로 되돌려 알 수 없는 하위 클래스가 이를 확장할 수 있도록 합니다.

예를 들어, Circle과 Square라는 두 개의 허용된 하위 클래스가 있는 Sealed로 선언된 Shape 클래스를 생각해 보세요. 이 경우 Circle은 final로 선언하고 Square는 non-sealed로 선언하여 알 수 없는 하위 클래스가 이를 추가로 확장할 수 있습니다.

클래스는 최종, 봉인, 비봉인 중 하나의 수식어만 가질 수 있다는 점에 유의하는 것이 중요합니다. 클래스의 봉인과 최종이 동시에 반대되는 목적으로 사용되기 때문에 불가능합니다.

추가로 추상 클래스는 Sealed 또는 Non-Sealed로 선언할 수도 있으며 추상 멤버를 가질 수도 있습니다. 봉인 클래스는 봉인 또는 봉인되지 않은 한 추상 하위 클래스를 허용할 수 있습니다.

마지막으로 허용된 하위 클래스의 접근성이 봉인된 클래스의 접근성과 일치할 필요는 없습니다. 봉인된 클래스에 계속 액세스할 수 있는 한 하위 클래스에 대한 액세스가 더 어려울 수 있습니다. 이로 인해 스위치에서 패턴 일치가 지원되는 향후 릴리스에서는 일부 사용자가 기본 절 없이 하위 클래스를 완전히 전환하지 못할 수 있습니다.

봉인 클래스의 개념을 더 잘 이해하기 위해 몇 가지 코딩 예제를 살펴보겠습니다.

아래 코드 조각에는 봉인된 클래스 통화가 정의되어 있습니다.

sealed class Currency permits Dinar {
    //:sealed Check out the non-sealed class inheritance for legal recommendations
}

적법한 하위 클래스를 생성하려면 동일한 모듈에서 클래스를 선언하고 통화 클래스를 직접 확장해야 합니다. 봉인된 클래스는 허용된 하위 클래스가 제한된 방식으로 더 확장되거나 알 수 없는 하위 클래스에 의해 확장을 위해 공개되는 것을 방지할 수 없습니다. 따라서 Dinar는 동일한 모듈에 있어야 합니다.

코드 조각을 더 살펴보면 봉인되지 않은 클래스 Dinar는 봉인된 클래스 통화를 확장합니다. 봉인되지 않은 클래스를 사용하면 추가 하위 클래스를 생성하고 확장할 수 있습니다.

public non-sealed class Dinar extends Currency {
    // This class can be extended by any unknown subclass
}

또는 Dinar를 확장할 수 있는 하위 클래스를 제한하려는 경우 클래스를 봉인으로 선언하고 허가 절을 통해 허용되는 하위 클래스를 지정할 수 있습니다.

sealed class Dinar extends Currency permits JordanianDinar, KuwaitiDinar {
    // Only subclasses JordanianDinar and KuwaitiDinar are permitted 
}

JordanianDinar 및 KuwaitiDinar 서브클래스는 Dinar와 동일한 모듈에서 선언되어야 하며 봉인 클래스 Dinar를 직접 확장해야 합니다. 원하는 제한 수준에 따라 봉인되거나, 비봉인되거나, 심지어 최종적으로도 가능합니다.

봉인된 클래스를 사용하면 관련 클래스의 계층 구조를 만들고 어떤 하위 클래스를 만들고 확장할 수 있는지 더 효과적으로 제어할 수 있어 코드에 더 나은 캡슐화와 모듈성을 제공할 수 있습니다. 또한 잘못된 하위 클래스를 생성하려고 하면 컴파일러가 경고할 수 있으므로 유형 안전성을 강화하는 데도 도움이 됩니다.

결론적으로 봉인 클래스는 클래스 상속에 대해 보다 조직적이고 구조화된 접근 방식을 제공하여 모듈 내에서 더 많은 제어와 유연성을 허용합니다. 하위 클래스에 제한을 가하고 추가 확장을 위한 옵션을 제공함으로써 봉인 클래스는 보다 신중하고 의도적인 클래스 계층 구조를 제공합니다.

위 내용은 Java의 봉인된 클래스 규칙의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.