Flutter学习-04-dart语法学习之类方法和对象操作符
- dart的类方法和对象操作符
1.类的方法
class staticClass{
//静态属性
static int count = 0;
//静态方法
static int sum(int a){
return count + a;
}
}
我们定义一个类,定义它的静态方法
也就是我们iOS中的类方法
void staticDemo(){
staticClass.count = 2;
var sum = staticClass.sum(10);
print(sum);
}
直接调用即可
我们不能在静态方法中
访问非静态变量
,很好理解,我们相当于类方法调用了实例对象的属性变量
,找个时候还没有实例
化所以报错。
class staticClass{
//静态属性
static int count = 0;
int num = 1;
//静态方法
static int sum(int a){
return count + a ;
}
// 实例方法
int sum1(int a){
return count +a +num;
}
}
我们调用的时候,修改了类的静态成员变量
,因为静态成员变量在整个内存中只有一份
,只有在一处被修改,全局都会被修改
。
void main(List<String> arguments) {
print('Hello world!');
staticDemo();//给count赋值为2了
print(staticClass.count);//2
print(staticClass.sum(20));//22
}
void staticDemo(){
staticClass.count = 2;
var sum = staticClass.sum(10);//12
print(sum);
}
2. 对象的操作符
void staticDemo(){
var class1;
class1 = staticClass();
print(class1.num);
class1 = null;
print(class1.num);
}
我们运行demo,结果报错
因为我们把
对象置空
,之后再访问对象的属性
,就会报错,我们为了避免这个问题。可以使用?
来进行判断即可
void staticDemo(){
var class1;
class1 = staticClass();
print(class1.num);
class1 = null;
print(class1?.num);
}
再次运行,返回为null
- 强制类型转换
void staticDemo(){
var class1 = Object();
class1 = staticClass();
print(class1.num);
}
这样写的话由于不会强制转换,虽然我们的staticClass
继承于Object
,但是并没有num
的属性,所以无法进行识别,这时候我们就要强转
一下,这种情形在iOS中很常见,我们一些基类,赋值后强转我们要的类型。
print((class1 as staticClass).num);
我们这个时候如果再次给class1
置空,这个时候直接报错 Objcet 对象不可为空
。
我们可以使用is
进行判读
if(class1 is staticClass){
print(class1.num);
}
3. 链式语法
在dart中可以使用..
返回的是对象本身
,这样我们就可以直接调用他的属性
和方法
了。
void staticDemo(){
var class1 = Object();
class1 = staticClass();
print((class1 as staticClass).num);
if(class1 is staticClass){
print(class1.num);
var count =
class1
..num = 11
..sum1(20);
print(count);
}
// print(class1?.num);
转载自:https://juejin.cn/post/7025957055571689508