什么?密封类可以被继承了!(JDK15新特性)

简介: 2020-9-15发布了JDK15JDK15一共有14个新特性,其中最为笔者印象深刻的莫过于对于——密封类可以被继承密封类从刚开始学就从各种途径了解到不能被继承,新版本的密封类如果想要被继承需要用permits指定被继承的类同时,被继承的类需要用final,sealed或者non-sealed修饰正常的一个代码思路publicclassPerson{ }classTeacherextendsPerson{ }    //教师classStudentextendsPerson{ }    //学生

2020-9-15发布了JDK15

JDK15一共有14个新特性,其中最为笔者印象深刻的莫过于对于——密封类可以被继承

密封类从刚开始学就从各种途径了解到不能被继承,新版本的密封类如果想要被继承需要用permits指定被继承的类

同时,被继承的类需要用final,sealed或者non-sealed修饰


正常的一个代码思路

publicclassPerson{ }
classTeacherextendsPerson{ }    //教师
classStudentextendsPerson{ }    //学生
classMiddleSchoolStudentextendsStudent{ }    //中学生
classGraduateStudentextendsStudent{ }    //研究生
classWorkerextendsPerson{ }    //工人
classRailWayWorkerextendsWorker{ }    //铁路工人

如果给Person加上sealed就会报错

publicsealedclassPerson{ }
classTeacherextendsPerson{ }    //教师
classStudentextendsPerson{ }    //学生
classMiddleSchoolStudentextendsStudent{ }    //中学生
classGraduateStudentextendsStudent{ }    //研究生
classWorkerextendsPerson{ }    //工人
classRailWayWorkerextendsWorker{ }    //铁路工人

这时如果想让密封类被继承就需要用permits指定被继承的类,被继承的类如果没有final,sealed或者non-sealed也是会报错的

publicsealedclassPersonpermitsTeacher,Student,Worker{ }
finalclassTeacherextendsPerson{ }    //教师
sealedclassStudentextendsPersonpermitsMiddleSchoolStudent,GraduateStudent{ }    //学生
finalclassMiddleSchoolStudentextendsStudent{ }    //中学生
finalclassGraduateStudentextendsStudent{ }    //研究生
non-sealedclassWorkerextendsPerson{ }    //工人
classRailWayWorkerextendsWorker{ }    //铁路工人

可以看到,继承密封类的类,

如果是密封类还要继承的话,还需要指定

如果是非密封类的话,就可以正常使用,正常被继承。

唉,密封类可以被继承了,颠覆我学代码以来的三观了

image.png



相关文章
|
17天前
|
安全 JavaScript 前端开发
JDK1.8的重要的新特性与功能
Java Development Kit (JDK) 1.8,也称为Java 8,是Java平台的一个重大更新,于2014年3月发布。它引入了多项新特性、新的API和性能提升
113 3
|
17天前
|
监控 安全 Java
探索Java的未来:JDK 18新特性全览
探索Java的未来:JDK 18新特性全览
94 0
|
17天前
|
缓存 安全 Java
JDK 14全景透视:每个Java开发者必知的新特性
JDK 14全景透视:每个Java开发者必知的新特性
61 0
|
17天前
|
JavaScript 前端开发 安全
Java新纪元:一探JDK 15的全新特性
Java新纪元:一探JDK 15的全新特性
51 0
|
17天前
|
JSON Java API
探秘JDK 13的黑科技:新特性一览
探秘JDK 13的黑科技:新特性一览
60 0
|
17天前
|
Java 测试技术 API
深度剖析JDK 11全新特性:编程艺术的巅峰之作
深度剖析JDK 11全新特性:编程艺术的巅峰之作
51 0
|
17天前
|
存储 Java 数据管理
探秘JDK 10:崭新特性悉数解析
探秘JDK 10:崭新特性悉数解析
67 0
|
17天前
|
JSON 编解码 Java
Java升级:JDK 9新特性全面解析“
Java升级:JDK 9新特性全面解析“
81 0
|
17天前
|
安全 Java API
JDK 11中的动态类文件常量:探索Java字节码的灵活性与动态性
在JDK 11中,Java语言引入了一个新的特性,允许在运行时动态地修改类文件常量。这一特性为Java开发者提供了更大的灵活性,使他们能够根据需要在运行时更改类文件中的常量值。本文将深入探讨动态类文件常量的工作原理、优点、限制以及在实际项目中的应用。
60 11
|
17天前
|
算法 Java 编译器
升级指南之JDK 11+ 新特性和AJDK
本文详细介绍了JDK个版本之间的特性、区别以及JDK版本更迭时优化了哪些地方,对JDK的版本选择给出了建议,以及升级教程。