跳至主要內容

sealed 类

Jin小于 1 分钟

sealed 类

1、简介

  • 痛点:类的继承很难管理,使用 sealed 来显式管理
  • 父类如果是 sealed 类,则必须至少有一个子类
  • sealed 类的子类,必须是 final ,sealed,non-sealed 之一

2、使用

2.1、定义父类

public sealed class Parent {
}

是 sealed 类,则必须至少有一个子类

image-20240521111956860
image-20240521111956860
public sealed class Parent permits Son{
}

permits 指的是只允许被 Son 类继承

2.2、定义子类

public class Son extends Parent{
}

编辑器提示:应为修饰符 'sealed、'non-sealed' 或 'final'

image-20240521112306564
image-20240521112306564

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 规则打破,可以继承,变更为隐式管理

贡献者: Jin