在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();
}
}
输出:
相关用法
- Java SecurityManager checkAccept()用法及代码示例
- Java SecurityManager checkAccess()用法及代码示例
- Java SecurityManager checkAwtEventQueueAccess()用法及代码示例
- Java SecurityManager checkConnect()用法及代码示例
- Java SecurityManager checkDelete()用法及代码示例
- Java SecurityManager checkExec()用法及代码示例
- Java SecurityManager checkExit()用法及代码示例
- Java SecurityManager checkLink()用法及代码示例
- Java SecurityManager checkListen()用法及代码示例
- Java SecurityManager checkMemberAccess()用法及代码示例
- Java SecurityManager checkMulticast()用法及代码示例
- Java SecurityManager checkPackageAccess()用法及代码示例
- Java SecurityManager checkPackageDefinition()用法及代码示例
- Java SecurityManager checkPermission()用法及代码示例
- Java SecurityManager checkPrintJobAccess()用法及代码示例
- Java SecurityManager checkPropertiesAccess()用法及代码示例
- Java SecurityManager checkPropertyAccess()用法及代码示例
- Java SecurityManager checkRead()用法及代码示例
- Java SecurityManager checkSecurityAccess()用法及代码示例
- Java SecurityManager checkSetFactory()用法及代码示例
- Java SecurityManager checkSystemClipboardAccess()用法及代码示例
- Java SecurityManager checkTopLevelWindow()用法及代码示例
- Java SecurityManager checkWrite()用法及代码示例
- Java SecurityManager getClassContext()用法及代码示例
- Java SecurityManager getSecurityContext()用法及代码示例
注:本文由纯净天空筛选整理自elite_programmer大神的英文原创作品 Sealed Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。