1.Flutter---类

1、类

1.自动生成setter和getter
2.方法不能重载
3.final类型的属性只有getter方法

每一个dart文件都可以看做一个library,可以通过import引用dart文件,但是如果在dart文件中的类名前有_,说明该dart文件是私有的,不可以被其他dart文件引用。

1.构造方法

1.语法糖:

Person(this.name,this.age){
	print(name);
}

语法糖的赋值在构造方法之前,所以name能打印出来值

2.构造方法不能重载,所以为了提供多种构造方法赋值,使用命名方法。

Person.withName(this.name){
	
}

类名.方法名称(){}

1.计算属性

计算属性是通过计算而来的,本身不存储值,其实就是通过计算转换到其他实例变量

class Rectangle{
num width,height;
//计算属性area
num get area => width * height;
//计算属性赋值,只能通过value,赋值给width或是height中的一个。??有疑问
		set area(value){
				width = area/20;
		}
}

使用

void main(){
	var rect  = new Rectangle();
	rect.width = 20;
	rect.height = 30;
	print(rect.area);
}

2.工厂构造方法

构造方法前面加上factory关键字,可以返回对象

factory Loger(){
  return Logger._internel();
}

3.初始化列表

1.在构造方法之前执行
2。多个表达式用,分隔
3,多用final变量赋值

//this.age = map["age"],gender = "male"就是初始化列表
Person.whihMap(Map map):this.age = map["age"],gender = "male"{
	this.name = map["name"];
}

4.静态成员

1.关键字static修饰变量和函数
2.静态常量成员static const
3.静态成员不能访问非静态成员,非静态成员可以访问静态成员

5.对象操作符

1.?条件操作符
Person person;
person.work(); //person 因为没有赋值,所以为空,会报空指针异常

person?.work(); //执行之后不会报错,也没有提示
2. as类型转化

var person;
person = "";
person = new Person();


person.work();//无法确定person的类型,无法编译
(person as Person).work();//将person类型固定为Person
3.is,is!是否指定类型

上面的as只能进行类型转化,前提是person曾经被赋值过Person类型

如果

var person;
person = "";

(person as Person).work();//报错,因为person没有赋值过Person类型

is,is!是判断是否为某个执行类型

var person;
person = "";

if(person is Person){
	person.work();
}
4.级联操作…

类似于构造者模式

new Person()..name = "Tome"
			..age = 20
			..work();

6.call方法

如果一个类实现了call方法,该类的对象可以当做方法实现

Person person = new Person();
person("Tom",20);

class Person{

	void  call(){
		print("$name ,$age is working...")
	}
}

2.类扩展

1、继承:

1.关键字extends
2.子类会继承父类的可见属性和方法,不会继承构造方法
3.单继承,多态
4.子类能够复写父类的方法、getter和setter

执行顺序:初始化列表先初始化,父类构造方法,子类构造方法

在代码书写时 初始化列表 不能现在父类构造方法之后,编译不通过

2.Mixins:可以实现多继承

class D extends A with B,C{
//D相当于继承了A,B,C
}
1.Mixins的类不可以有显式的构造方法,即上面的B,C不能有显式的构造方法
2.如果上面的A,B,C三个类都存在XX方法,那么D调用的XX方法来自谁,看最后继承的是哪个类,就是来自谁,上面的例子就是来自C,跟写代码时的继承先后顺序有关系
3.作为Mixins的类只能继承自Object,即是B,C不能继承其他父类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值