dart构造方法总的来说分四类,默认构造方法、命名构造方法、常量构造方法、工厂构造方法
1、默认构造方法
默认构造方法只能有一个,也就是不能重载,可以带参数,也可以不带
当子类继承父类时,初始化子类构造函数时会优先初始化父类构造函数;继承时需要使用 :super() 父类构造函数,若父类为无参构造函数时可以省略;
2、命名构造函数
使用命名构造函数可以为实现多个构造函数或提供更清晰的构造函数;同时子类需要实现 :super() .named构造函数类型完全取决于父类构造函数类型;其中命名构造函数是不允许被继承的,子类命名构造函数不能与父类重名,若子类需要实现与父类同名的命名构造函数,则需要调用父类的同名的命名构造函数, :super() .named相同的named;
3、常量构造函数
1.比较特出的类才会使用这种构造函数,生成类的对象是不会变的
2.其中所有实例变量都是 final 类型的,类中不允许有普通变量类型,因此其变量在构造函数完成之后不允许变更;
3.变量中不允许有初始值;
4.常量构造函数必须用 const 关键词修饰;
5.常量构造函数不允许有函数体;
6.实例化时需要加 const 否则实例化的对象仍然可以修改变量值;
4、工厂构造函数(Factory Constructors)
这也是一个很特出的构造函数,工厂构造函数不需要每次构建新的实例,且不会自动生成实例,而是通过代码来决定返回的实例对象;工厂构造函数类似于 static 静态成员,无法访问 this 指针;一般需要依赖其他类型构造函数;工厂构造函数还可以实现单例;
注意事项
1. 构造函数具有传递性
若在声明构造函数时,多个函数之间有类似的逻辑关联,为了减少代码冗余,可以通过函数传递来精简代码,类似级联调用,使用:连接
2. Factory 工厂构造函数可以实现单例
class Singleton {
static final Singleton _singleton = Singleton.named();
factory Singleton() => _singleton;
Singleton.named();
}
网友评论