Dart中的静态成员
- 使用static关键字来实现类级别的变量和函数
- 静态方法不能访问非静态成员,非静态方法可以访问静态成员
- 静态方法中不能使用this关键字
- 类中的常量需要使用static const声明
- 静态成员不能通过对象来访问,而是通过类来访问
- 静态方法通常用于为工具类创建方法
class Person {
static String name = '张三';
int age = 20;
static void show() {
print(name);
}
void printInfo() {
print(name);
print(this.age);
}
}
void main() {
print(Person.name);
Person.show();
Person p = new Person();
p.printInfo();
}
Dart中的对象操作符
- Dart中的对象操作符有哪些
- 条件运算符: ?
- 类型转换: as
- 级联操作符: ..
- 类型判断: is、is!
class Person {
String name;
int age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
void main() {
Person p1 = new Person('张三', 20);
p1.printInfo();
p1.name = '李四';
p1.age = 30;
p1.printInfo();
String name = p1.name;
String name1 = p1?.name;
print(name);
print(name1);
var p2;
p2 = '';
p2 = new Person('王五', 40);
(p2 as Person).printInfo();
Person p3 = new Person('赵六', 50);
p3..name = '田七'
..age = 60
..printInfo();
if (p3 is Person) {
p3.printInfo();
}
if (p3 is! Person) {
print('不是Person类型');
}
}
Dart中的类的继承
- Dart中的类的继承
- 使用关键字extends继承一个类
- 子类会继承父类可见的属性和方法,不会继承构造方法
- 子类能复写父类的方法,getter和setter
class Person {
String name;
int age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
class Web extends Person{
Web(String name, int age) : super(name, age);
}
void main() {
Web w = new Web('李四', 30);
w.printInfo();
}
- super用法
class Person {
String name;
int age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
class Web extends Person{
String sex;
Web(String name, num age, String sex) : super(name, age){
this.sex = sex;
}
run(){
print("${this.name}---${this.age}---${this.sex}");
}
}
void main() {
Web w = new Web('李四', 30, '男');
w.printInfo();
w.run();
}
Dart类的继承覆写父类的方法
- 子类和父类有同名的属性或者方法时,会覆盖父类的属性和方法
- 子类覆盖父类的方法时,需要加上@override注解
- 子类覆盖父类的方法时,方法参数要一致
class Person {
String name;
num age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
work() {
print("${this.name}在工作...");
}
}
class Web extends Person{
Web(String name, num age) : super(name, age);
run() {
super.work();
}
@override
void printInfo() {
print('姓名:${this.name}---年龄:${this.age}');
}
@override
work() {
print("${this.name}在学习...");
}
}
void main() {
Web w = new Web('李四', 30);
w.printInfo();
w.work();
}