什么?密封类可以被继承了!(JDK15新特性)
2020-9-15发布了JDK15JDK15一共有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{ }//铁路工人
【什么?密封类可以被继承了!(JDK15新特性)】如果给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{ }//铁路工人
可以看到 , 继承密封类的类 , 如果是密封类还要继承的话 , 还需要指定如果是非密封类的话 , 就可以正常使用 , 正常被继承 。
唉 , 密封类可以被继承了 , 颠覆我学代码以来的三观了
文章插图
来源:
- 看不上|为什么还有用户看不上华为Mate40系列来看看内行人怎么说
- 麒麟|荣耀新款,麒麟810+4800万超清像素,你还在犹豫什么呢?
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 体验|闭上眼睛点外卖是什么感觉?时隔一年再次体验,进步令人欣慰
- 互联网|强制收集个人信息?国家网信办拟为38类App戴紧箍
- 计费|5G是如何计费的?
- 减重|快看!奇瑞蚂蚁都减重了 那你还焦虑什么?
- 小店|抖音小店无货源是什么?与传统模式有什么区别?
- 车轮旋转|牵引力控制系统是如何工作的?它有什么作用?
- 制药领域|为什么AI制药这么火,为什么是现在?