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://www.uj5u.com/yidong/192203.html
標籤:其他

