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

JAVA公众号

共 1560字,需浏览 4分钟

 ·

2020-10-28 13:24

点击上方“JAVA”,星标公众号

重磅干货,第一时间送达


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{ }  //铁路工人

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

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

来源:https://s.yam.com/YkDdn


阿里云网盘公测预约地址:

关注我的另一个公众号,回复:阿里

(一定要回复:阿里)否则啥也等不到

扫描上方二维码关注并回复:阿里

就有申请地址啦!

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报