学习完基本语法、函数、类和对象,给我的感觉最大的就是Dart和Java太像了,不知道是不是错觉。今天我们来学习Dart的static关键字,静态!!!
静态有:1、没有静态类 2、静态方法 3、静态属性
先来看一段代码:
class Rect {
//定义静态属性:1、通过static关键字定义静态属性
// 2、需要给到初始化值,否则需要再static后加上late关键字标识延迟赋值
static int height = 0;
static late int width;
int area = 0;
Rect() {}
//定义静态方法,通过static关键字实现
static void setWidth(int w) {
width = w;
}
//定义非静态方法,可以访问静态方法和静态属性,以及非静态属性
//1、非静态属性可加也可不加this,this代表的是类对象
//2、静态属性不能加this,因为静态属于类,不属于对象
//3、访问静态方法,直接调用
//4、访问非静态方法,直接调用
void setMyWidth(int w) {
print("默认面积 area = " + area.toString());
print("高 = " + height.toString()); //
setWidth(w);
printInfo();
}
void printInfo(){
print("print info");
}
//定义静态方法,可以访问的只有静态方法和静态属性,不能访问非静态属性和非静态方法
static void setMyW(int w){
// print("默认面积 area = " + area.toString());//不能访问非静态属性
print("高 = " + height.toString()); //
setWidth(w);
// printInfo();//不能访问非静态方法
}
}
一、静态类
Dart中没有静态类,没有内部类(也没有静态内部类!!)
Classes can't be declared inside other classes.
定义接口
二、静态方法
静态方法中,可以访问静态属性,不可以访问非静态属性。可以访问静态方法,不可以访问非静态方法。
三、静态属性
可以被静态方法或非静态方法访问。不能在静态属性前加this.
四、非静态方法
非静态方法,可以访问静态方法和静态属性,以及非静态属性、非静态方法。遵循下列规则:
1、非静态属性可加也可不加this,this代表的是类对象
2、静态属性不能加this,因为静态属于类,不属于对象
3、访问静态方法,直接调用
4、访问非静态方法,直接调用
总结:
Dart中的静态成员:
1、使用static 关键字来实现类级别的变量和函数
2、静态方法不能访问非静态成员,非静态方法可以访问静态成员
网友评论