本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Dart 类的继承-简单继承
面向对象的三大特性: 封装、继承、多态
Dart中的类的继承
- 子类使用extends关键字来继承父类
- 子类会继承父类里面可见的属性和方法 但是不会继承构造函数
- 子类能复写父类的方法 getter和setter
class Person {
String name = '张三';
int age = 26;
void printInfo() {
print("${this.name} ------ ${this.age}");
}
}
class Web extends Person {
}
main() {
Web w = new Web();
print(w.name); // 张三
w.printInfo(); // 张三 ------ 26
}
Dart 类的继承 super关键词的使用 实例化子类给父类构造函数传参
面向对象的三大特性: 封装、继承、多态
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) {
}
}
main() {
// Person p = new Person('张三', 21);
// p.printInfo(); // 张三 ------ 21
// Person p1 = new Person('李四', 31);
// p1.printInfo(); // 李四 ------ 31
Web w = new Web('王五', 37);
w.printInfo(); // 王五 ------ 37
}
注意: 最新版本的dart中需要初始化不可为null的实例字段,如果不初始化的话需要在属性前面加上late
class Person {
String name;
int age;
Person(this.name, this.age);
void printInfo() {
print('${this.name} ------ ${this.age}');
}
}
class Web extends Person {
late String sex;
Web(String name, int age, String sex) : super(name, age) {
this.sex = sex;
}
run() {
print('${this.name} ------ ${this.age} ------ ${this.sex}');
}
}
main() {
// Person p = new Person('张三', 21);
// p.printInfo(); // 张三 ------ 21
// Person p1 = new Person('李四', 31);
// p1.printInfo(); // 李四 ------ 31
Web w = new Web('王五', 37, '男');
w.printInfo(); // 王五 ------ 37
w.run(); // 王五 ------ 37 ------ 男
}