前言
Dart中的继承:
1.子类使用extends关键词来继承父类
2.子类会继承父类里面可见的属性和方法,但是不会继承构造函数
3.子类能复写父类的方法 getter和setter
简单继承
子类使用extends关键词来继承父类
class Person {
String name = '张三';
num age = 30;
void printInfo() {
print('${this.name}----${this.age}');
}
}
class Web extends Person {}
main() {
Web w = new Web();
print(w.name);
w.printInfo();
}
super关键词的使用
class Person {
String name;
num age;
Person(this.name, this.age);
void printInfo() {
print('${this.name}----${this.age}');
}
}
class Web extends Person {
Web(String name, num age) : super(name, age);
}
main() {
Web w = new Web('hhh', 12);
w.printInfo(); // hhh--- 12
}
实例化子类给父类构造函数传参
子类里面可以扩展自己属性和方法
class Person {
String name;
num 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.age}");
}
}
main() {
Web w = new Web('hhh', 12, '女');
w.run(); // hhh--- 12
}
实例化子类给命名构造函数传参
class Person {
String name;
num age;
Person(this.name, this.age);
Person.xxx(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.xxx(name, age) {
this.sex = sex;
}
run() {
print("${this.name}---${this.age}---${this.age}");
}
}
main() {
Web w = new Web('hhh', 12, '女');
w.run(); // hhh--- 12
}
覆写父类的方法
class Person {
String name;
num age;
Person(this.name, this.age);
void printInfo() {
print('${this.name}----${this.age}');
}
work() {
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() {
super.work(); //子类调用父类的方法
print("${this.name}---${this.age}---${this.age}");
}
// 覆写父类的方法
@override // 可以写 可以不写
void printInfo() {
print('姓名:${this.name}----年龄${this.age}');
}
}
main() {
Web w = new Web('hhh', 12, '女');
w.printInfo();
w.run();
}