1 关键字
dart类的继承是用 extends关键字。
class Person {
String name = '张三';
num age = 30;
void printInfo() {
print('$name,$age');
}
}
class Boy extends Person {}
main() {
final boy = Boy();
print(boy.name);
boy.printInfo();
}
使用super关键字来访问父类:
class Person {
String name;
num age;
Person(this.name, this.age);
void printInfo() {
print('$name,$age');
}
}
class Boy extends Person {
Boy(String name, num age) : super(name, age);
}
main() {
final boy = Boy ('hhh', 12);
boy.printInfo();
}
2 类的扩展
在扩展中定义新的属性和方法。
class Person {
String name;
num age;
Person(this.name, this.age);
void show(String msg){
///show the text
}
void printInfo() {
show('$name,$age');
}
}
class Boy extends Person {
String? className; ///私有变量
Boy(String name, num age, String cls) : super(name, age){
className = cls;
}
void goToClass(){ ///私有方法
show('$name go to $className');
}
}
main() {
final boy = Boy ('hhh', 12);
boy.printInfo();
}
3 私有和公有变量
dart使用下划线来标记私有变量。
class Person {
String name;
num age;
Person(this.name, this.age);
void show(String msg){
///show the text
}
void printInfo() {
show('$name,$age');
}
}
class Boy extends Person {
String? _className; ///私有变量
Boy(String name, num age, String cls) : super(name, age){
_className = cls;
}
void _goToClass(){ ///私有方法
show('$name go to $_className');
}
}
main() {
final boy = Boy ('hhh', 12);
boy.printInfo();
}
4 方法的覆盖
使用@override标记
class Person {
String name;
num age;
Person(this.name, this.age);
void show(String msg){
///show the text
}
void printInfo() {
show('$name,$age');
}
}
class Boy extends Person {
String? _className; ///私有变量
Boy(String name, num age, String cls) : super(name, age){
_className = cls;
}
void _goToClass(){ ///私有方法
show('$name go to $_className');
}
@override
void printInfo() {
show('$name,$age,$_className');
}
}
main() {
final boy = Boy ('hhh', 12);
boy.printInfo();
}