学习【Java新特性】【17对比8】-【1. Sealed Class密封类】

密封类是Jdk15引入的新特性,用于限制类的继承关系。sealed关键字与permits一起使用,规定子类必须是特定的类或接口。这增加了代码的可控性和安全性,允许开发者精确地定义继承层次结构。例如,sealedclassApermitsB,C,D声明了只有B,C,D可以作为A的直接子类。non-sealed类可以自由继承,而final类则不能被继承。
摘要由CSDN通过智能技术生成

一. 介绍

Jdk15中开始引入的特性,Sealed Class密封类,用于指定类间继承关系,对类的继承进行限制作用。密封类使得开发者能够更加明确的规定类别的继承关系,是的类的继承树结构更加清晰。
再该功能下,引入个新关键字加粗样式以及原有的final 共同限制类的关系:sealed non-sealed permits。它们的含义如下:
sealed:申明类别为密封类,需要与permits同时出现,表示该类需要(必须)由permits关键字后的几个类别进行直接或者间接的继承;
non-sealed:用于被permits关键字指定的类别,表示该类的子类不需要进行密封,可任意进行继承;
permits:与sealed同时出现,用于指定“被密封”的类。

二. 使用

1. 申明密封继承属性

[ public/private... ] [sealed/non-sealed/final] class ClassName [ (extends <PClass>)| (implements interface,...)] [permits Child,...]{
}

sealed关键字需要与permits关键字同时修饰,后者指定的类需要(必须)进行密封继承属性的修饰
举例

sealed class A permits B,C,D{ // B,C需要使用密封位置的关键字进行申明
}
sealed class B extends A permits E... {}
non-sealed class C extends A {} //后续继承关系自由
final class D extends A {} // 不可被继承

2. 密封使用

permits关键字指定的类需要继承自permits位置的类别并申明各自的密封属性。

a.直接使用

sealed class A permits B{}
final class B extends A{}

b.间接使用

sealed class A permits B{}
class C extends A{}
final class B extends C {}

三. 补充

该特性不能用于interface

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值