Dart语言学习 - 24 extends 继承
本节目标
- 实现继承
- 继承抽象类的问题
- 不可多继承
- 父类调用
- 调用父类构造
- 重写超类函数
环境
实现继承
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void main() { var p = AndroidPhone(); p.startup(); p.shutdown(); }
class Phone { void startup() { print('开机'); } void shutdown() { print('关机'); } }
class AndroidPhone extends Phone { }
|
继承抽象类的问题
1 2 3 4 5 6 7 8 9 10 11 12 13
| void main() { var p = AndroidPhone(); p.startup(); p.shutdown(); }
abstract class Phone { void startup(); void shutdown(); }
class AndroidPhone extends Phone { }
|
抽象类中只定义抽象函数,实例化访问会报错
父类调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| void main() { var p = AndroidPhone(); p.startup(); }
class Phone { void startup() { print('开机'); } void shutdown() { print('关机'); } }
class AndroidPhone extends Phone { void startup() { super.startup(); print('AndroidPhone 开机'); } }
|
super 对象可以访问父类
调用父类构造
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void main() { var p = AndroidPhone(12345678); p.showNumber(); }
class Mobile { int number; int signal; Mobile(this.number); void showNumber() { print('010-${number}'); } }
class AndroidPhone extends Mobile { AndroidPhone(int number) : super(number); }
|
可调用父类的 构造函数
重写超类函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| void main() { dynamic p = AndroidPhone(12345678); p.showNumber111(); }
class Mobile { int number; int signal; Mobile(this.number); void showNumber() { print('010-${number}'); } }
class AndroidPhone extends Mobile { AndroidPhone(int number) : super(number);
@override void noSuchMethod(Invocation mirror) { print('被重写 noSuchMethod'); } }
|
在重写的函数上加修饰符 @override
代码
参考
© 猫哥
https://ducafecat.tech
邮箱 ducafecat@gmail.com / 微信 ducafecat / 留言板 disqus