在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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。