本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Dart 类中的静态成员 静态方法
Dart中的静态成员:
- 使用static 关键字来实现类级别的变量和函数
- 静态方法不能访问非静态成员,非静态方法可以访问静态成员
class Person {
static String name = "张三";
static void show() {
print(name);
}
}
main() {
print(Person.name); // 访问静态属性
Person.show(); // 访问静态方法
}
class Person {
static String name = "张三";
int age = 20;
static void show() {
print(name);
}
/** 非静态方法可以访问静态成员以及非静态成员 */
void printInfo() {
print(name); // 访问静态属性
print(this.age); // 访问非静态属性
show(); // 调用静态方法
}
/** 静态方法访问静态成员 */
static void printUserInfo() {
print(name); // 静态属性
show(); // 静态方法
// print(this.age); // 静态方法无法访问非静态属性
// print(age); // 静态方法无法访问非静态属性
// this.printInfo(); // 静态方法无法访问非静态方法
// printInfo(); // 静态方法无法访问非静态方法
}
}
main() {
/** 非静态方法调用 需要先实例化 */
Person p = new Person();
p.printInfo();
/** 静态方法 */
Person.printUserInfo();
}
Dart 对象操作符
Dart中的操作符对象
- ? 条件运算符
- as 类型转换
- is 类型判断
- .. 级联操作
代码如下:
class Person {
String name;
int age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}------${this.age}");
}
}
main() {
/** ? 条件运算符 */
Person p1;
p1?.printInfo(); //已被最新的dart废弃
Person p2 = new Person('张三', 20);
p2?.printInfo(); //已被最新的dart废弃
/** as 类型转换 */
var p3;
p3 = '';
p3 = new Person('张三', 25);
(p3 as Person).printInfo(); // 张三------25
/** is 类型判断 */
Person p4 = new Person('张三', 21);
if(p4 is Person) {
p4.name = '李四';
}
p4.printInfo(); // 李四------21
// print(p is Object); // true
/** .. 级联操作 */
// 原始写法
Person p5 = new Person('张三1', 20);
p5.printInfo(); // 张三1------20
p5.name = '张三2';
p5.age = 30;
p5.printInfo(); // 张三2------30
// ..写法
Person p6 = new Person('张三1', 20);
p6.printInfo(); // 张三1------20
p6..name = '张三2'
..age = 30
..printInfo(); // 张三2------30
}