Dart基础学习总结(下)

目录

Dart 类中的静态成员 静态方法

Dart中的静态成员:

Dart中的对象操作符

面向对象的三大特性:封装 、继承、多态

Dart中的类的继承: 

super关键词的使用

子类里面调用父类的方法

Dart中的抽象类 多态 以及接口

Dart中的抽象类

Dart中多态

接口

接口 文件分离

Dart中implements实现多个接口

Dart中的mixins   with的使用

mixins的实例类型是什么?

Dart中的泛型

泛型方法

 泛型类

自定义一个泛型类

泛型接口

Dart中的库 自定义库、系统库、第三方库

Dart中的库

 Dart中导入自己本地库

导入系统内置库 math库 

导入系统内置库实现请求数据httpClient

关于 Async Await

Dart 导入Pub包管理系统中的库

Dart库的重命名  Dart冲突解决

库的部分导入

 延迟加载


Dart 类中的静态成员 静态方法

Dart中的静态成员:

  1、使用static 关键字来修饰的变量和函数就称为静态属性或函数 

  2、静态方法不能访问非静态成员,非静态方法可以访问静态成员

 class Person {
//用static修饰的就是静态成员
   static String name = '张三';
   static void show() {
     print(name);
   }
 }

 main(){
   //调用静态方法或属性的时候,不能用实例化一个对象来调用
   //而是直接通过类名.属性或类名.方法名()的形式来访问
   print(Person.name);
   Person.show(); 

 }

对于静态方法不能访问非静态成员,非静态方法可以访问静态成员的理解

class Person {
  static String name = '张三';//静态属性
  int age=20;                //非静态属性

  static void show() {       //静态方法,可以直接访问静态属性
    print(name);
  }

  void printInfo(){          /*非静态方法可以访问静态成员以及非静态成员*/
       print(name);          //访问静态属性
       print(this.age);      //访问非静态属性
       show();               //调用静态方法
  }

  static void printUserInfo(){//静态方法
        print(name);          //静态属性
        show();               //静态方法
       //print(this.age);      //静态方法没法访问非静态的属性
       //this.printInfo();     //静态方法没法访问非静态的方法
       //printInfo();
  }
}


main(){
   //调用静态的属性和方法
   print(Person.name);
   Person.show();

   //调用非静态的属性和方法
   Person p=new Person();
   p.printInfo();
   Person.printUserInfo();
}

Dart中的对象操作符

    ?     条件运算符 (了解)

    as    类型转换

    is    类型判断

    ..    级联操作 (连缀)  (记住)


 

class Person {
  String name;
  num age;
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}"); 
  }
}

main(){
//------?.条件运算符的使用
   Person p;          //在这里定义一个变量p,没有对它进行初始化
   p.printInfo();     //若直接使用p.printInfo时,就会报错
   p?.printInfo();    //但是加上?号以后,就不会报错,此时表示,若p为空则不执行后面的方法
  
   Person p=new Person('张三', 20);//给p赋值以后
   p?.printInfo();                //此时就可以正常打印:张三---20


//------is类型判断的使用
    if(p is Person){ //判断p是不是属于Person类
         p.name="李四";
     }

     p.printInfo();
     print(p is Object);//输出结果:true,因为dart中所有类都是object的子类
 

//------as类型转换的使用
     var p1;
     p1 = Person('张三1', 20);

    (p1 as Person).printInfo();//将p1强制转化成Person类型,可防止程序运行出错

  ..    级联操作 (连缀) 使用的比较多的一种操作:

   Person p1=new Person('张三1', 20);
   p1.printInfo();//输出结果:张三1---20
   /*级联操作示例*/
   p1..name="李四"
     ..age=30
     ..printInfo();//输出结果:李四---30

面向对象的三大特性:封装 、继承、多态

Dart中的类的继承: 

    1、子类使用extends关键词来继承父类

    2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数

    3、子类能复写父类的方法 getter和setter

class Person {
  String name='张三';
  num age=20;
  void printInfo() {
    print("${this.name}---${this.age}"); 
  }
}

class Web extends Person{
}

main(){  

  Web w=new Web();
  print(w.name);
  w.printInfo();//虽然Web类什么都没做,但是依然可以打印出来张三---20

}

super关键词的使用

class Web extends Person{
  //根据系统提示,会自动生成下面语句
  //因为构造函数不能被继承,所以这里创建了web类的构造函数
  //通过super关键字把值付给父类
  Web(String name, num age) : super(name, age){

  }
}

当然Web类继承Person后,还可以写自己的属性和方法。如:

class Web extends Person{
  //除了父类的两个属性,还可以直接添加自己的属性,sex
  String sex;
  Web(String name, num age,String sex) : super(name, age){
    this.sex = sex
  }
   //还可以写自己的方法
  printWebInfo(){
     print("${this.name}---${this.age}---${this.sex}"); 
}
   
}

main(){
  //在实例化的时候也要传入三个参数
  Web w=new Web('张三', 12,'男');
  w.printInfo();//输出结果:张三---12
  w.printWebInfo();//输出结果:张三---12---男

}

在子类里面,不仅可以继承父类,扩展父类,还可以复写父类的方法

class Person {
  String name;
  num age;

  Person(this.name,this.age);

  void printInfo() {
    print("${this.name}---${this.age}"); 
  }

  work(){
    print("${this.name}在工作...");
  }
}



class Web extends Person{

  Web(String name, num age) : super(name, age);

  run(){
    print('run');
  }
  //覆写父类的方法
  @override       //可以写也可以不写  建议在覆写父类方法的时候加上 @override
  void printInfo(){
     print("姓名:${this.name}---年龄:${this.age}");
  }

  @override
  work(){
    print("${this.name}的工作是写代码");
  }

}


main(){

  Web w=new Web('李四',20);
 //执行的时候会优先找子类里的方法,没有才会执行父类里的方法
  w.printInfo();
  w.work();

}

子类里面调用父类的方法

class Person {

  String name;
  num age;

  Person(this.name,this.age);

  void printInfo() {
    print("${this.name}---${this.age}"); 
  }

  work(){
    print("${this.name}在工作...");
  }

}


class Web extends Person{

  Web(String name, num age) : super(name, age);

  run(){

    print('run');
    super.work();  //自类调用父类的方法,通过super关键字调用

  }

}


main(){

  Web w=new Web('李四',20);
  w.printInfo();
  w.run();输出结果:run  李四在工作

}

Dart中的抽象类 多态 以及接口

Dart中的抽象类

Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。

  1、抽象类通过abstract 关键字来定义

  2、Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。

  3、如果子类继承抽象类,必须得实现里面的抽象方法

  4、如

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值