手记

【备战春招】第3天 Flutter必备Dart基础

课程名称Flutter从入门到进阶 实战携程网App 一网打尽核心技术
课程章节:Flutter必备Dart基础:Dart快速入门
课程讲师CrazyCodeBoy

课程内容

1.数据类型

  1. Dart 是强类型语言,在声明变量时必须是明确的类型或者是系统能够解析的类型。但可以用 var 来声明变量,Dart 会自推导出数据类型,var 实际上是编译期的“语法糖”。dynamic 表示动态类型,被编译后,实际是一个object类型;
  2. 除了var,还可以使用 const和final 声明常量,在使用 const 和 final 的时候,可以省略var或者其他类型,const和final定义的都是常量,值不能改变并且在声明的时候就必须初始化。const 定义的是编译时常量,只能用编译时常量来初始化 final定义的常量可以用变量来初始化;
  3. Dart 支持的数据类型有数值型(Number)、字符串(String)、布尔型(Boolean)、数组(List)、Map;
  4. 数值型(Number)包括整型 int 和浮点型 double;
  5. 普通字符串使用单引号或者双引号都可以,多行的可以使用’’'来包裹,声明原始字符串,直接在字符串前加字符“r” , 可以避免“\”的转义作用,字符串的拼接可以使用+、空格、${};

2.面向对象

  • Dart 是面向对象的语言,支持封装、继承和多态,所有类都继承自Object类,单继承;
  • Dart 类默认有一个无参的构造函数,在修饰属性和方法时没有public、private、protected这些修饰符,私有方法和私有属性带有下划线(_)前缀;
  • 关于构造方法:
class Student extends Person {
  //定义类的变量
  String? _school; //通过下划线来标识私有字段(变量)
  String? city;
  String? country;
  String? name;
  static Student? instance;

  ///构造方法:
  ///通this.school初始化自有参数
  ///name,age交给父类进行初始化
  ///city为可选参数
  ///country设有默认参数
  Student(this._school, String? name, int? age,
      {this.city, this.country = 'China'})
  //初始化列表:除了调用父类构造器,在子类构造器方法体之前,你也可以初始化实例变量,不同的初始化变量之间用逗号分隔开
      : name = '$country.$city',
  //如果父类没有默认构造方法(无参构造方法),则需要在初始化列表中调用父类构造方法进行初始化
        super(name, age) {
    //构造方法体不是必须的
    print('构造方法体不是必须的');
  }

  //命名构造方法:[类名+.+方法名]
  //使用命名构造方法为类实现多个构造方法
  Student.cover(Student stu) : super(stu.name, stu.age) {
    print('命名构造方法');
  }
}
  • Dart中的静态成员使用static关键字来修饰变量和函数,要知道的是静态方法中不能访问非静态变量,非静态方法可以访问静态成员。
  • Dart中的抽象类通过 abstract 关键字来定义,子类继承抽象类必须得实现里面的抽象方法。
  • Dart中的 mixins,是在多个类层次结构中重用代码的一种方式。作为 mixins的类只能继承自Object,不能继承其他类,不能有构造函数,一个类可以 mixins多个 mixins类,mixins 通过with关键字来实现;
//定义类 A
class A {
  String name = "this is A";
  void printA() {}
}
//定义类 B
class B {
  String age = 18;
  void printB() {}
}
//通过 mixins,定义 C 获取AB 两个类的属性和方法
class C with A, B {
}

课程总结

可以通过对比的方式学习 Dart的基础语法知识,比如通过对比 Java 和 Dart,找出两种语言种的共性,对 Dart 独有的内容进行针对性的练习,可以提高学习的效率。

0人推荐
随时随地看视频
慕课网APP