当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Sealed用法及代码示例


在Java中,我们有抽象类的概念。由于这些类的对象无法实例化,因此必须从这些类继承。另一方面,Java中有一个final类的概念,它不能被任何其他类继承或扩展。如果我们想限制可以从特定类继承的类的数量怎么办?答案是密封类。因此,密封类是一种限制可以继承给定类的类数量的技术。这意味着只有程序员指定的类才能从该特定类继承,从而限制对其的访问。当一个类被声明为密封时,程序员必须指定可以继承它的类的列表。 Java 中密封类的概念是在 Java 15 中引入的。

创建密封类的步骤

  • 定义您想要制作印章的类。
  • 将“sealed”关键字添加到类中,并使用“permits”关键字指定允许哪些类继承它。

示例

sealed class Human permits Manish, Vartika, Anjali
{
public void printName()
{
System.out.println("Default");
}
}
non-sealed class Manish extends Human
{
public void printName()
{
System.out.println("Manish Sharma");
}
}
sealed class Vartika extends Human
{
public void printName()
{
System.out.println("Vartika Dadheech");
}
}
final class Anjali extends Human
{
public void printName()
{
System.out.println("Anjali Sharma");
}
}

上面例子的解释:

  • 人类是的父类马尼什,瓦尔蒂卡,安贾利。这是一个密封类;其他类不能继承它。
  • 马尼什,瓦尔蒂卡, 和安贾利是 的子班人类类,并且有必要使它们密封,非密封的, 或者最后。密封类的子类必须是密封的、非密封的或最终的。
  • 如果除任何其他类别马尼什,瓦尔蒂卡, 和安贾利试图继承人类类,它会导致编译器错误。

代码实现

Java


import java.lang.*;
sealed class Human permits Manish, Vartika, Anjali
{   
    public void printName()
    {
        System.out.println("Default");
    }
}
non-sealed class Manish extends Human
{
    public void printName()
    {
        System.out.println("Manish Sharma");
    }
}
sealed class Vartika extends Human
{
    public void printName()
    {
        System.out.println("Vartika Dadheech");
    }
}
final class Anjali extends Human
{
    public void printName()
    {
        System.out.println("Anjali Sharma");
    }
}
public class Main
{
    public static void main(String[] args)
    {   
        Human h1 = new Anjali();
        Human h2 = new Vartika();
        Human h3 = new Manish();
         
        h1.printName();
        h2.printName();
        h3.printName();
    }
}

输出:

Code and Output in IDEOutput Terminal



相关用法


注:本文由纯净天空筛选整理自elite_programmer大神的英文原创作品 Sealed Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。