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

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 啊?密封类可以被继承了!(JDK15新特性)

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

作者:发呆哥o_o ….

https://blog.csdn.net/weixin_46285416/

2020-9-15发布了JDK15

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

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

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

正常的一个代码思路


public class Person { }

class Teacher extends Person { }    //教师

class Student extends Person { }   //学生

class MiddleSchoolStudent extends Student { }   //中学生

class GraduateStudent extends Student { }   //研究生

class Worker extends Person{ }    //工人

class RailWayWorker extends Worker{ }  //铁路工人

如果给Person加上sealed就会报错


public sealed class Person  { }

class Teacher extends Person { }     //教师

class Student extends Person { }   //学生

class MiddleSchoolStudent extends Student { }   //中学生

class GraduateStudent extends Student { }   //研究生

class Worker extends Person{ }    //工人

class RailWayWorker extends Worker{ }  //铁路工人

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


public sealed class Person permits Teacher,Student,Worker{ }

final class Teacher extends Person { }     //教师

sealed class Student extends Person permits MiddleSchoolStudent,GraduateStudent{ }   //学生

final class MiddleSchoolStudent extends Student { }   //中学生

final class GraduateStudent extends Student { }   //研究生

non-sealed class Worker extends Person{ }    //工人

class RailWayWorker extends Worker{ }  //铁路工人

可以看到,继承密封类的类,如果是密封类还要继承的话,还需要指定;如果是非密封类的话,就可以正常使用,正常被继承。

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

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

END

推荐好文

强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

为什么MySQL不推荐使用uuid或者雪花id作为主键?

为什么建议大家使用 Linux 开发?爽(外加七个感叹号)

IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)

记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)

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

原文始发于微信公众号(Java笔记虾):啊?密封类可以被继承了!(JDK15新特性)

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 啊?密封类可以被继承了!(JDK15新特性)


 上一篇
Kafka消息中间件到底会不会丢消息 Kafka消息中间件到底会不会丢消息
大型互联网公司一般都会要求消息传递最大限度的不丢失,比如用户服务给代金券服务发送一个消息,如果消息丢失会造成用户未收到应得的代金券,最终用户会投诉。 为避免上面类似情况的发生,除了做好补偿措施,更应该在系设计的时候充分考虑各种异常,设计一个
下一篇 
适配器模式,装饰模式,代理模式异同,别再说看着都一样了! 适配器模式,装饰模式,代理模式异同,别再说看着都一样了!
作者:程序员形同陌路 blog.csdn.net/lulei9876/article/details/39994825 把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式。