前言
Dart中的繼承:
1.子類使用extends關(guān)鍵詞來(lái)繼承父類
2.子類會(huì)繼承父類里面可見的屬性和方法由桌,但是不會(huì)繼承構(gòu)造函數(shù)
3.子類能復(fù)寫父類的方法 getter和setter
簡(jiǎn)單繼承
子類使用extends關(guān)鍵詞來(lái)繼承父類
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關(guān)鍵詞的使用
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
}
實(shí)例化子類給父類構(gòu)造函數(shù)傳參
子類里面可以擴(kuò)展自己屬性和方法
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
}
實(shí)例化子類給命名構(gòu)造函數(shù)傳參
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(); //子類調(diào)用父類的方法
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();
}