静态方法和静态属性(static):

  • 通过static修饰的方法和属性称为静态方法和静态属性,注意静态方法和静态属性只能通过类名访问,不能通过对象访问。
  • 静态方法不能访问非静态的属性和非静态方法,反正可以
class Person{  String name;  int age;  Person(this.name,this.age);  printInfo(){    //在字符串中,可以直接通过${}访问类的属性和方法    print('${this.name}---${this.age}');  }}class Web extends Person{  /**    *super 是调用父类的构造方法    *构造函数是无法继承,所有在子类继承父类的时候,需要super来实现父类的构造方法    */  Web(String name, num age) : super(name, age);      // override可写,可不写,建议写上  @override  printInfo(){    print('子类中的${this.name}---${this.age}');  }}main(){  /**   * Dart中对象操作符   * ?条件运算符   * is类型判断   * ..级联操作   */  Person p1;  // 下面表示如果p1是空,表示不执行后面的,如果有值,执行后面的  p1?.printInfo();  Person p2=new Person('张三',20);  p2?.printInfo();  p2..name='李四'    ..age=20    ..printInfo();}  
抽象类:用abstract修饰的类

抽象类中有抽象方法,其是没有方法体的,继承抽象类的子类必须要实现子类的抽象方法

abstract class Animal{  // 抽象方法,子类必须要实话抽象方法  eat(); }class Dog extends Animal{  @override  eat() {    print('我是小狗');  }}main(){  /**   * 抽象类(abstract主要用来指定标准)   * 在dart中,定义接口和定义抽象类一样,都使用abstract,**dart中接口没有使用interface定义**   * 抽象类不能被实例化,只有继承他的子类实例化    * 接口里面必须全部是抽象方法,没有普通的方法,但是抽象类中可以既有普通方法,也有抽象方法   */  Dog d=new Dog();  d.eat();}  

一个类可以实现多个接口,但是只能单继承抽象类,如果模仿多继承,可以使用mixins,作为mixins的类只能继承Object,不能继承其他的类,作为mixins的类不能有构造函数,如下:

class A{  printA(){    print('A');  }}class B{  printB(){    print('B');  }}//如果模仿多继承,可以使用mixinsclass C with A,B{}main(){  C c1=new C();  c1.printB();}  
泛型:可以解决代码重用和不特定的类型校验的问题
// 泛型方法,注意需要加上三个地方TT getData<T>(T data){  return data;}main(){    print(getData<String>('我叫唐凯震'));}  

dart中的库

import 'package:http/http.dart';main(){  /**   *  库   * dart中,库通过import引入,注意是没有from   * 每个dart文件都是一个库   * 库分类:   * 1,自定义库   * 2,系统内置的库:import 'dart:xxx'   * 3,第三方库,托管到pub包管理系统中的   * 第三方库可以从下面的地址中寻找:   * https://pub.dev/packages   *    * 使用第三方库按照下面步骤:   * 1,创建pubspec.yaml文件   * 2,配置pubspec.yaml文件   * 3,运行put get获取远程库   * 5,看文档引入库使用   */}  

con

扫码关注公众号,有更多精彩文章等你哦