1、子类的构造方法默认会调用父类的无名无参构造方法
void main(){
var student = new Student();
}
class Person{
String name;
Person(){
print("Person...");
}
}
class Student extends Person{
int age;
}
运行结果:
Person...
2、如果父类没有无名无参构造方法,则需要显示调用父类的构造方法
3、在构造方法参数后使用:显示调用父类的构造方法
void main() {
var student = new Student("Tom");
print(student.name);
}
class Person {
String name;
Person(this.name);
Person.withName(this.name);
}
class Student extends Person {
int age;
//Student(String name) : super(name);
Student(String name) : super.withName(name);
}
4、构造方法的执行顺序
1)父类的构造方法在子类构造方法开始执行的位置调用
2)如果有初始化列表,初始化列表会在父类的构造方法之前执行
void main() {
var student = new Student("Tom", "Male");
print(student.name);
}
class Person {
String name;
Person(this.name);
Person.withName(this.name);
}
class Student extends Person {
int age;
final String gender;
//Student(String name) : super(name);
//Student(String name) : super.withName(name);
Student(String name, String g)
: gender = g,
super.withName(name);
}
本文深入解析了子类构造方法如何默认调用父类无参构造方法,当父类无无参构造方法时如何显式调用,以及通过构造方法参数后使用冒号显示调用父类构造方法的细节。同时,探讨了构造方法的执行顺序,包括父类构造方法在子类构造方法中的调用时机,以及初始化列表的执行顺序。
&spm=1001.2101.3001.5002&articleId=104583079&d=1&t=3&u=fedb12a323db428fadecf6db706a7f86)
955

被折叠的 条评论
为什么被折叠?



