Java15后的sealed阻止繼承濫用


正常情況下,只要某個class沒有final修飾符,那么任何類都可以從該class繼承。

從Java 15開始,允許使用sealed修飾class,並通過permits明確寫出能夠從該class繼承的子類名稱。

例如,定義一個Shape類:

public sealed class Shape permits Rect, Circle, Triangle { ... } 

上述Shape類就是一個sealed類,它只允許指定的3個類繼承它。如果寫:

public final class Rect extends Shape {...} 

是沒問題的,因為Rect出現在Shapepermits列表中。但是,如果定義一個Ellipse就會報錯:

public final class Ellipse extends Shape {...} // Compile error: class is not allowed to extend sealed class: Shape 

原因是Ellipse並未出現在Shapepermits列表中。這種sealed類主要用於一些框架,防止繼承被濫用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM