Dart:二十一、继承

继承

实现继承

class Phone {
  void startup() {
    print('开机');
  }
  void shutdown() {
    print('关机');
  }
}

class AndroidPhone extends Phone {
}

void main() {
  var p = AndroidPhone();
  p.startup();
  p.shutdown();
}

开机
关机

父类调用

class Phone {
  void startup() {
    print('开机');
  }

  void shutdown() {
    print('关机');
  }
}

class AndroidPhone extends Phone {
  @override
  void startup() {
    super.startup();
    print('AndroidPhone 开机');
  }
}

void main() {
  var p = AndroidPhone();
  p.startup();
}

开机
AndroidPhone 开机

super 对象可以访问父类

调用父类构造

class Mobile {
  int number;
  Mobile(this.number);
  void showNumber() {
    print('010-$number');
  }
}

class AndroidPhone extends Mobile {
  AndroidPhone(int number) : super(number);
}

void main() {
  var p = AndroidPhone(12345678);
  p.showNumber();
}

010-12345678

可调用父类的 构造函数

重写超类函数

class Mobile {
  int number;
  Mobile(this.number);
}

class AndroidPhone extends Mobile {
  AndroidPhone(int number) : super(number);

  @override
  void noSuchMethod(Invocation mirror) {
    print('被重写 noSuchMethod');
  }
}

void main() {
  dynamic p = AndroidPhone(12345678);
  p.showNumber111();
}

被重写 noSuchMethod

在重写的函数上加修饰符 @override

继承抽象类的问题

abstract class IPhone {
  void startup() {
    print('开机');
  }

  void shutdown();
}

class AndroidPhone extends IPhone {
  @override
  void startup() {
    super.startup();
    print('AndroidPhone 开机');
  }

  @override
  void shutdown() {
    print('AndroidPhone 关机');
  }
}

void main() {
  var p = AndroidPhone();
  p.startup();
  p.shutdown();
}

开机
AndroidPhone 开机
AndroidPhone 关机

抽象类中只定义抽象函数,实例化访问会报错

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 抽象类、函数、成员 不能直接 new 实例化 继承方式使用 抽象类中只定义抽象函数,实例化访问会报错 定义 实例 ...
    hxljy阅读 365评论 0 3
  • 类 构造函数 通过创建一个与其类同名的函数来声明构造函数 (另外,还可以附加一个额外的可选标识符,如 命名构造函数...
    西门淋雨阅读 156评论 0 1
  • 前文链接: Dart简介 Dart语法(上) 内容: 函数(方法)函数定义及各类函数;函数参数;闭包 面向对象定义...
    玉圣阅读 2,403评论 0 2
  • 我在之前的一篇Flutter安装教程中提到了Flutter采用的语言是Dart,所以要学习Flutter必须要学习...
    LK2917阅读 5,193评论 1 2
  • Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 ...
    极课编程阅读 4,788评论 0 40