Dart3.0 知识点详解

发表时间: 2023-05-31 15:30

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 修饰。