final属性可以通过构造方法的this语法躺赋值

重点
构造方法:
用dart语法糖创建自定义构造方法,可以设置final属性值,因为对属性赋值发生在构造方法执行前。
e.g.
class Person{
String name ;
int age;
final String address;
// Person(String name,int age)
// {
// this.name=name;
// this.age=age;
// }
Person(this.name,this.age,this.address);//dart语法糖,在构造方法执行前,对属性赋值,可以直接设置final属性值
void work(){
print("Name is $name,Age is $age,She is on board...");
}
}
构造方法
没有构造方法会默认一个空的构造方法
自定义构造方法后,默认构造方法无效
构造方法不能重载
Dart构造方法
如果没有自定义构造方法,则会有个默认构造方法
如果存在自定义构造方法,则默认构造方法无效
构造方法不能重载
Dart语法糖
final String gender; Person (this.name, this.age, this.gender);
这种写法是先给属性赋值再执行构造方法,所以可以给final属性赋值是没问题的
想要在Dart使用多个构造方法,则需要命名构造方法
1、使用类名.方法的形式实现
Person.withAge(this.age, this.gender); Person.sad(this.gender);
构造方法图
在类中使用类名.xxx(参数,参数,...)的形式定义多个构造方法
在类中使用类名._xxxxx(参数,参数,...)的形式定义多个私有构造方法
构造方法语法糖与普通构造方法不一样的地方是:可以给final修饰的未初始化过的属性赋值。
普通的构造方法不能给final修饰的未初始化的属性赋值
构造方法语法糖,直接在参数上使用this.属性,进行赋值
构造方法
如果没有自定义构造方法,则会有个默认构造方法
如果存在自定义构造方法,则默认构造方法无效
构造方法不能重载
命名构造方法
使用命名构造方法,可以实现多个构造方法
使用类名.方法的形式实现
在普通构造方法中不能对final属性进行设置,但可以使用语法糖的形式对final属性设值。
由于dart中方法不能重载,因此不能像java语言直接定义多个构造方法,如需多个构造方法需要使用类名.withXXX(参数)形式定义其他构造方法
特点,多个构造方法
构造方法特点。
构造方法:
使用命名构造方法解决dart中构造方法不能重载的问题
命名构造方法
构造方法。
但是使用语法糖则可以
不能在构造方法中对final属性赋值
构造方法的简写方式 2
构造方法的简写方式
构造方法 代码
构造方法
没有自定义的时候,采用的是默认的
有自定义的,默认的就无效了
构造方法不能重载
如何实现多个参数的构造方法呢?
class Person{ String name; int age; final String gender;//可以在下面的构造方式中赋值 person( this.name,this.age, this.gender); //多个构造方法 person.withName(this.name); //var person = new Person.wthName('lalala'); }
一,构造方法
1,如果没有自定义构造方法,则会有个默认构造方法
2,如果存在自定义构造方法,则默认构造方法无效
3,语法塘
构造方法不能对final类型进行赋值,但是语法糖可以

4,构造方法不能重载
二,命名构造方法(实现多个构造方法)
1,使用类名.方法的形式实现

构造方法的语法糖
Person(this.name,this.age,this.gender);
可直接给属性赋值,包括final类型的属性,因为是在执行构造函数前执行
Dart中构造方法不支持多态,可使用命名构造方法实现多个构造方法,即类名。方法名的形式实现
Person.withName(string name){
this.name = name;}
构造方法,Person(this.name,this.age,this.gender)和
Person(String name,String age,String gender){
this.name = name;
this.age = age;
this.gender = genter;
}
是有却别的。因为gender被赋予了final所以第二种构造函数gender不能这样赋值
另类的构造方法 .with关键字
