前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JDK15 新特性】密封类

【JDK15 新特性】密封类

作者头像
CODER-V
发布2023-03-09 09:08:46
4400
发布2023-03-09 09:08:46
举报
文章被收录于专栏:藏经阁

1. 背景

在 Java 中如果想让一个类不能被继承和修改,这时我们应该使用 final 关键字对类进行修饰。不过这种要么可以继承,要么不能继承的机制不够灵活,有些时候我们可能想让某个类可以被某些类型继承,但是又不能随意继承,是做不到的。Java 15 尝试解决这个问题,引入了 sealed 类,被 sealed 修饰的类可以指定子类。这样这个类就只能被指定的类继承。

2. 新特性

通过密封的类和接口来限制超类的使用,密封的类和接口限制其它可能继承或实现它们的其它类或接口。

具体使用:

  • 使用修饰符sealed,可以将一个类声明为密封类。密封的类使用保留关键字permits列出可以直接扩展(即extends)它的类。
  • sealed 修饰的类的机制具有传递性,它的子类必须使用指定的关键字进行修饰,且只能是 final、sealed、non-sealed 三者之一。
    • final:子类为finall,间接表示父类不能被其他类继承
    • sealed:子类也可以声明为密封类
    • non-sealed:声明为非密封类,可以被其他类继承

举例:

代码语言:javascript
复制
public abstract sealed class Shape permits Circle, Rectangle, Square {...}//密封类

public final class Circle extends Shape {...} //final表示子类不能再被继承了,间接表示父类值能被指定类继承

public sealed class Rectangle extends Shape permits TransparentRectangle, FilledRectangle {...}//子类也是一个密封类

public non-sealed class Square extends Shape {...} //non-sealed表示子类不是一个密封类,可以被任何类继承
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 新特性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档