2020-03-23

1、with(Mixin) implements(abstract) abstract extends区别

Extend是单继承,子类可以拥有自己的成员变量,也可以对父类的方法进行重写;

Abstract是抽象类,父类定义方法,子类中必须实现其方法;

Implements是隐式接口,可以同时继承多个父类,但必须要abstract修饰父类,而且要必须要重写父类方法;

With可以同时继承多个父类,要用mixin来修饰父类,但可以不用重写父类方法;

2、static 、final区别

Final是代表着不可改变的常量,

Static 修饰类级别的成员和方法,实例对象不能访问,类可以访问

3、Set和get方法作用,监听类的属性被访问的过程;

4、只希望定义泛型的类型是num类型 用关键字extends,泛型类型用Object类型非常不方便

class Location{

T x;

T y;

}

5泛型定义方法

T getfirst(List ts){

  return ts[0];

}

7枚举 enmu,常用属性index/values

8、Dart/package/show/hide/as/export/llibrary/part区别

1)、dart:前缀表示Dart的标准库,如dart:io、dart:html、dart:math

2)、当各个库有命名冲突的时候,可以使用as关键字来使用命名空间

3)、show显示某个成员

4)、hide可以隐藏某个成员

5)、library语句用来导入一个库

6)、将每一个dart文件作为库文件,使用export关键字在某个库文件中单独导入,例如library utils;

  export "mathUtils.dart";

7)、part跟libary功能 一样,但官方不推荐使用

9、常量构造方法是指在方法前加const进行修饰,那么可以保证同一个参数,创建出来的对象是相同的,

但所有的成员变量必须是final修饰的,创建对象不再使用 new关键字,而是用const;

10、Dart提供了factory关键字, 用于通过工厂去获取对象,保证对象的值一样

11、 因为不支持方法(函数)的重载,所以我们没办法创建相同名称的构造方法。我们需要使用命名构造方法:

Person.fromMap(Map map) {    this.name = map['name'];    this.age = map['age'];  }

12、初始化列表 Point(this.x, this.y) : distance = sqrt(x * x + y * y);

13、重定向构造方法

在某些情况下, 我们希望在一个构造方法中去调用另外一个构造方法, 这个时候可以使用重定向构造方法:

Person.fromName(String name) : this(name, 0);

你可能感兴趣的:(2020-03-23)