sealed 类
小于 1 分钟
sealed 类
1、简介
- 痛点:类的继承很难管理,使用 sealed 来显式管理
- 父类如果是 sealed 类,则必须至少有一个子类
- sealed 类的子类,必须是 final ,sealed,non-sealed 之一
2、使用
2.1、定义父类
public sealed class Parent {
}
是 sealed 类,则必须至少有一个子类

public sealed class Parent permits Son{
}
permits 指的是只允许被 Son 类继承
2.2、定义子类
public class Son extends Parent{
}
编辑器提示:应为修饰符 'sealed、'non-sealed' 或 'final'

2.3、定义后代
public final class Grandson extends Son{
}
修改子类
public sealed class Son extends Parent permits Grandson {
}
3、final ,sealed,non-sealed
final
被 final 修饰的类,不能被继承,不能有子类。
当某个类的整体定义为 final 时,就表明了你不打算继承该类,而且也不允许别人这么做。即这个类是不能有子类的。
sealed
显式管理(一眼能看出继承关系),父类如果是 sealed 类,则必须至少有一个子类
non-sealed
把 sealed 规则打破,可以继承,变更为隐式管理