sealed关键字可以创建封闭类(sealed class)。封闭类只能在同一个文件中被继承
封闭类的主要目的有:
1、限制继承范围。只有在同一个库中我们才能继承该类,这使得该类的子类型数量是可知的,更易于管理。
2、实现完备性检查。因为我们知道所有的子类,所以可以在父类中为每个子类实现相应的方法和属性,并在编译时检查是否完成全部实现。这可以提高代码健壮性。
3、方便语句匹配。因为子类数量是确定的,我们可以在父类中使用switch语句根据子类类型执行相应逻辑,这在其他语言中不太方便。
注意:封闭类(sealed class)是隐式抽象的,不能被直接实例化。封闭类隐式地被视为抽象类。必须由子类实例化 // final animl = Animal(); // Error:Cannot instantiate abstract class 'Animal'
base和 interface修饰类的关键字:
base是强调 继承 。
interface是强调 实现 。
两者的的目的是: 限制外部文件对修饰类的派生和实现。
外部文件可操作: base 修饰的类在外部允许继承,不允许实现。
外部文件可操作:interface 修饰的类在外部不允许继承,允许实现。
final 对类进行修饰
其目的是为了关闭该类的继承体系,final 修饰的类无法在外部进行派生。
被 final 修饰的类无法被直接继承;解决:继承自 final 修饰的类,子类需要被 base 、final 或 sealed 修饰。