>Java >java지도 시간 >봉인 클래스를 사용하여 Java 14에서 클래스 상속을 제한하는 방법

봉인 클래스를 사용하여 Java 14에서 클래스 상속을 제한하는 방법

王林
王林원래의
2023-07-29 19:42:22664검색

봉인 클래스를 사용하여 Java 14에서 클래스 상속 관계를 제한하는 방법

Java 14에서는 클래스 상속 관계를 제한하는 메커니즘을 제공하는 봉인 클래스 개념이 도입되었습니다. 봉인 클래스를 사용하면 이 클래스에서 상속할 수 있는 클래스와 이 클래스의 직접 하위 클래스가 될 수 있는 클래스를 명시적으로 지정할 수 있습니다. 이러한 방식으로 우리는 클래스의 상속 관계를 더 잘 제어할 수 있고 상속해서는 안 되는 클래스를 상속할 때 발생할 수 있는 문제를 줄일 수 있습니다.

이 기사에서는 Java 14에서 Sealed Classes를 사용하는 방법을 소개하고 이해를 돕기 위해 몇 가지 코드 예제를 제공합니다.

먼저 전자 장비에 대한 클래스 계층 구조를 구축한다고 가정하고 기본 클래스를 생성해 보겠습니다.

public abstract sealed class ElectronicDevice permits Laptop, Desktop {

    // 基类的代码...

}

기본 클래스 정의에서는 abstractsealed라는 두 가지 키워드를 사용합니다. . abstract는 클래스가 추상 클래스이고 인스턴스화될 수 없음을 나타내는 데 사용됩니다. sealed는 클래스가 상속 범위를 제한하는 Sealed 클래스임을 나타내는 데 사용됩니다. . abstractsealedabstract用于表示该类是一个抽象类,不能被实例化;sealed用于表示该类是一个Sealed Class,即限制了其子类的继承范围。

接下来,我们创建两个子类:LaptopDesktop,并使它们继承自ElectronicDevice

public final class Laptop extends ElectronicDevice {

    // Laptop类的代码...

}

public non-sealed class Desktop extends ElectronicDevice {

    // Desktop类的代码...

}

在子类的定义上,我们使用了关键字finalnon-sealedfinal表示该类是不可被继承的,non-sealed表示该类是ElectronicDevice的子类,但不是Sealed Class。这意味着,除了LaptopDesktop这两个类之外,其他类不能直接继承自ElectronicDevice

接下来,我们可以在ElectronicDevice类中定义一些方法和属性。对于Sealed Class来说,由于其受限的继承关系,可以更加自信地在代码中使用这些方法和属性,而不用担心其它不应该继承该类的子类可能会破坏类的不变性或引入不一致性。

另外,Sealed Class还提供了一种机制,在定义子类时明确允许哪些类可以成为该类的子类。例如,我们可以创建一个名为Smartphone的子类,并使其只允许IOSPhoneAndroidPhone两个类继承:

public sealed class Smartphone extends ElectronicDevice permits IOSPhone, AndroidPhone {

    // Smartphone类的代码...

}

public final class IOSPhone extends Smartphone {

    // IOSPhone类的代码...

}

public final class AndroidPhone extends Smartphone {

    // AndroidPhone类的代码...

}

在这个例子中,我们使用permits关键字来明确指定Smartphone类允许继承的类的范围。这就意味着,只有IOSPhoneAndroidPhone两个类可以继承自Smartphone,其他类不能。

通过Sealed Classes,我们可以更好地管理和限制类的继承关系,提高代码的可读性和可维护性。只需要在定义类时使用sealed关键字,以及在定义子类时使用permits

다음으로 LaptopDesktop이라는 두 개의 하위 클래스를 만들고 ElectronicDevice에서 상속하도록 만듭니다.

rrreee

하위 클래스에서 정의적으로 다음을 사용합니다. 키워드 finalnon-sealed. final은 클래스가 상속될 수 없음을 의미하고 non-sealed는 클래스가 ElectronicDevice의 하위 클래스이지만 Sealed 클래스는 아님을 의미합니다. 즉, LaptopDesktop 두 클래스를 제외한 다른 클래스는 ElectronicDevice에서 직접 상속할 수 없습니다.

다음으로 ElectronicDevice 클래스에서 몇 가지 메서드와 속성을 정의할 수 있습니다. Sealed Class의 경우 제한된 상속 관계로 인해 클래스를 상속해서는 안 되는 다른 하위 클래스가 클래스의 불변성을 파괴하거나 불일치를 초래할 수 있다는 걱정 없이 코드에서 이러한 메서드와 속성을 더욱 확신을 가지고 사용할 수 있습니다. 🎜🎜또한 Sealed Class는 하위 클래스를 정의할 때 어떤 클래스가 이 클래스의 하위 클래스가 될 수 있는지 명시적으로 허용하는 메커니즘도 제공합니다. 예를 들어, Smartphone이라는 하위 클래스를 생성하고 IOSPhoneAndroidPhone 두 클래스만 상속하도록 허용할 수 있습니다. 🎜rrreee🎜 이 예에서는 permits 키워드를 사용하여 Smartphone 클래스가 상속할 수 있는 클래스 범위를 명시적으로 지정합니다. 이는 IOSPhoneAndroidPhone 두 클래스만 Smartphone에서 상속할 수 있지만 다른 클래스는 상속할 수 없음을 의미합니다. 🎜🎜Sealed Classes를 통해 클래스의 상속 관계를 더 잘 관리 및 제한하고 코드의 가독성과 유지 관리성을 향상시킬 수 있습니다. 클래스의 상속 범위를 명확하게 정의하고 예상치 못한 상속 관계가 발생하는 것을 방지하려면 클래스를 정의할 때 sealed 키워드를 사용하고 하위 클래스를 정의할 때 permits 키워드를 사용하면 됩니다. 잠재적인 문제에. 🎜🎜요약하자면, Java 14에서 Sealed Classes는 보다 유연하고 정확한 클래스 상속 관계 관리 메커니즘을 제공합니다. Sealed 클래스를 합리적으로 사용하면 클래스의 상속 관계를 더 잘 제어하고 보호할 수 있으므로 코드의 안정성과 유지 관리성이 향상됩니다. 🎜🎜이 기사가 봉인 클래스를 사용하여 Java 14에서 클래스 상속 관계를 제한하는 데 도움이 되기를 바랍니다. 읽어 주셔서 감사합니다! 🎜

위 내용은 봉인 클래스를 사용하여 Java 14에서 클래스 상속을 제한하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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