原理
默认情况下,只要类没有使用final修饰符修饰,那么任何类都可以从该类继承。从Java 15开始,Java允许使用sealed修饰类,并通过permits明确指定能够从该class继承的子类。
示例public abstract sealed class Shape permits Ellipse, Rectangle {
//abstract void fun();
}
final class Ellipse extends Shape {
}
non-sealed class Rectangle extends Shape {
}
//Shape是一个密封类,它不允许有Ellipse和Rectangle之外的其它子类
final class Triangle extends Shape{ //报错
}
//final修饰的类不能作为父类
class Circle extends Ellipse{ //报错
}
//sealed修饰的类必须得有子类
sealed class Square extends Rectangle{ //报错
}