关于dart:dart系列之dart类的扩展

3次阅读

共计 1473 个字符,预计需要花费 4 分钟才能阅读完成。

简介

尽管 dart 中的类只能有一个父类,也就是单继承的,然而 dart 提供了 mixin 语法来绕过这样限度。

明天,和大家一起来探讨一下 dart 类中的继承。

应用 extends

和 JAVA 一样,dart 中能够定义一个父类,而后应用 extends 来继承他,失去一个子类,如下所示:

class Student{

}
class Boy extends Student{}

在子类中,能够应用 super 关键词来调用父类的办法。

抽象类和接口

dart 中除了继承一般类之外,还能够继承抽象类和实现接口。

抽象类是以 abstract 关键词润饰的 class,如下所示:

abstract class Student{String getName();
}

抽象类中通常会有形象办法,形象办法须要在子类中进行实现。

当然抽象类中也能够有具体实现的办法,然而抽象类不能够被实例化,如果你想在抽象类中实例化对象,这能够应用之前咱们提到的工厂构造函数。

和 java 不同的是,dart 中并没有 interface,他引入的是一个 Implicit interfaces 的概念。

对应每个对象来说,都隐式定义了一个蕴含类中所有办法和属性的接口。

一般来说,如果一个对象蕴含另外一个对象的构造和办法,然而他们之间的内容又是不一样的,则能够应用 implements 来隐式实现接口,如下所示:

class Student{

  String name;
  String get _name => name;
}

class Girl implements Student{
  @override
  String name;

  @override
  String get _name => "girls";
}

在 dart 中一个类能够 implements 多个接口。

下面的例子中,咱们用到了 @override 注解,他示意子类对父类办法或者属性的重写。

在应用 @override 中,咱们须要留神的是,子类对父类的实现会有上面几个限度:

  1. 子类的实现办法的返回值,必须和父类返回值雷同,或者是父类返回值的子类。
  2. 子类的实现办法的参数,必须和父类办法参数雷同,或者是父类参数的父类。
  3. 子类办法的参数必须和父类的参数个数雷同。

mixins

尽管 dart 不反对多重继承,然而能够应用 mixin 来实现相似多重继承的性能。

要应用 mixins,能够应用关键字 with,如下所示:

class Boy extends Student with Person {
  // ···
  name='boy';
  myName();}

在 dart 中 mixin 是一个非凡的类,应用关键词 mixin 来形容,mixin 的类中,没有构造函数,如下所示:

mixin Person {
  String name='';

  void myName() {print('my name is:'+name);
  }
}

在 mixin 中能够定义有用的办法和属性,继承 mixin 的类能够重写对应的属性和办法,从而达到自定义的性能。

在 mixin 中咱们也能够指定特定的类,也就是说只有特定的类才可能应用 mixin,则能够应用关键词 on, 如下所示:

mixin Person on Boy{
  String name='';

  void myName() {print('my name is:'+name);
  }
}

总结

以上就是 dart 中继承的应用,dart 中还能够继承办法,这是 dart 的高级利用,咱们会在后续的文章中进行介绍,敬请期待。

本文已收录于 http://www.flydean.com/07-dart-extend/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

欢送关注我的公众号:「程序那些事」, 懂技术,更懂你!

正文完
 0