10.还不会扩展Dart中的类?

博客围绕 Dart 的继承与实现展开。介绍了 Dart 用特定关键字继承类,构造函数继承规则,子类调用父类构造函数的方式,还提到命名构造函数。同时说明 Dart 用关键字继承类,继承父类 API 但不继承实现,且与 Java 不同,可直接继承普通类。

目录传送门:《Flutter快速上手指南》先导篇

继承

Dart 使用 extends 关键字来继承一个类。

特别的是,在 Dart 中,构造函数是不能被继承的。

除了默认构造函数是空参数的类,其构造函数是能够被子类自动继承的。

如果子类想要调用父类的构造函数,可以使用 super 关键字。

class NewPoint extends Point{
  NewPoint(x, y):super(x, y);
  NewPoint.newOrigin():super.origin(){
    print('$x, $y');
  }
}
复制代码

当调用 NewPoint.newOrigin() 时,会先调用父类的 origin 构造函数,然后再执行该构造函数内的表达式。

其中, NewPoint.newOrigin() 形式的构造函数被成为 命名构造函数

实现

在 Dart 中,使用 implements 关键字来继承一个类。

它意味着子类继承了父类的 API,但不继承其实现。

不同于 Java,Dart 可以直接继承一个普通类。

// A person. The implicit interface contains greet().
class Person {
  // In the interface, but visible only in this library.
  final _name;

  // Not in the interface, since this is a constructor.
  Person(this._name);

  // In the interface.
  String greet(String who) => 'Hello, $who. I am $_name.';
}

// An implementation of the Person interface.
class Impostor implements Person {
  get _name => '';

  String greet(String who) => 'Hi $who. Do you know who I am?';
}

String greetBob(Person person) => person.greet('Bob');

void main() {
  print(greetBob(Person('Kathy')));
  print(greetBob(Impostor()));
}复制代码

目录传送门:《Flutter快速上手指南》先导篇

如何找到我?

传送门:CoorChice 的主页

传送门:CoorChice 的 Github


转载于:https://juejin.im/post/5c90c240e51d45593856bfaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值