使用extends 指定要继承父类,使用super引用父类对象
class Parent {
void show() {
print('Parent show');
}
}
class Children extends Parent {
@override
void show() {
super.show();
print('Children show');
}
@override
void noSuchMethod(Invocation invocation) {
print('Children nosuchmethod ${invocation.memberName}');
}
}
final obj = Children();
obj.show();
// 输出
// Parent Show
// Children show
子类可以重写父类的实例方法,getter,setter方法,使用@override 注释表明要重写函数,重写函数必须完全匹配父类的方法定义,包括返回类型,参数类型,参数个数等
noSuchMethod
子类可以重写noSuchMethod来检测对不存在方法或者变量的访问,用法如下
class Children extends Parent {
@override
void noSuchMethod(Invocation invocation) {
print('Children nosuchmethod ${invocation.memberName}');
}
}
正常情况下,是无法直接调用类不存在的方法或者变量的,除非:
调用对象的类型为dyanmic,类似如下
dynamic obj = Children();
obj.showName();
// 由于children没有showName这个方法,所以会触发noSuchMethod的调用