啊?密封类可以被继承了 —— 爷青结(JDK15新特性)

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

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

唉,密封类可以被继承了,颠覆我学代码以来的三观了
在这里插入图片描述

评论 327
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值