Dart中的类的继承:
1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数
3、子类能复写父类的方法 getter和setter
1.简单继承
可见继承自Person的子类web可以直接访问父类的方法和属性
class Person {
String name='张三';
num age=20;
void printInfo() {
print("${this.name}---${this.age}");
}
}
class Web extends Person{
}
main(){
Web w=new Web();
print(w.name);
w.printInfo();
}
2.super关键字
super的作用:用于实例化自类给父类构造函数传参
在实例化子类的时候将name和age传给父类的构造函数
super的位置和初始化列表一样,所以super也是在执行当前构造函数之前把参数传递给父类
class Person {
late String name;
late 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('张三', 12);
w.printInfo();
}
此外,子类不但可以访问父类除了构造函数以外的所有属性和方法,子类还可以有自己的方法:
class Person {
String name;
num age;
Person(this.name,this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
class Web extends Person{
late String sex;
Web(String name, num age,String sex) : super(name, age){
this.sex=sex;
}
run(){
print("${this.name}---${this.age}--${this.sex}");
}
}
main(){
// Person p=new Person('李四',20);
// p.printInfo();
// Person p1=new Person('张三',20);
// p1.printInfo();
Web w=new Web('张三', 12,"男");
w.printInfo();
w.run();
}
可以用super给命名构造函数传参,方法一样:
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 {
late String sex;
Web(String name, num age, String sex) : super.xxx(name, age) {
///给命名构造方法传参直接加上命名构造方法的方法名即可
this.sex = sex;
}
run() {
print("${this.name}---${this.age}--${this.sex}");
}
}
main() {
// Person p=new Person('李四',20);
// p.printInfo();
// Person p1=new Person('张三',20);
// p1.printInfo();
Web w = new Web('张三', 12, "男");
w.printInfo();
w.run();
}