Sealed Class
Sealed Class即密封类,使用sealed关键字修饰一个类即表示该类是密封类。
sealed class Error
密封类的一个主要特点是其只有有限个子类型,其所有的子类型在编译期就能够全部枚举出来。
从这一个特点上看,密封类有点像是枚举类型。但和枚举类型所不一样的是,密封类可以有多个子类型,并且其子类型可以有多个实例,而不像枚举类型只有有限个实例。
为了实现密封类的上述特点,对于密封类有以下限制:
- 密封类自身是abstract的,即无法实例化
- 密封类的直接子类型必须声明在和其父类相同的package下
- 密封类的间接子类型可以声明在任意package下
使用场景
使用Sealed Class的场景通常是为了替代使用枚举类型,枚举类型因为其只能拥有有限个实例对象,且枚举对象的方法和属性都较为有限。
在一些需要更加复杂的枚举类型的能力时,我们就可以考虑使用密封类来实现。