当前位置: 代码迷 >> 综合 >> dart 学习 2
  详细解决方案

dart 学习 2

热度:18   发布时间:2023-10-24 09:51:34.0

1、类

      Dart所有的东西都是对象,所有的对象都继承自Object类。

      Dart 没有public private protected 修饰符,使用 _ 把一个属性或者方法定义为私有

      class Person{

               Srting name;

                int age;

               Person(String name,int age){ // 构造函数

                    this.age = age

                    this.age = age

                }

                void getInfo(){

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

                 }     

               void setInfo(int age){

                      this.age = age

                 }

      }

      void main(){

              Person p1 = new Person('aa',23);

              print(p1.name);

              p1.getInfo();

              p1.setInfo(22);

       }

2、静态成员

     使用static关键字来实现类级别的变量和函数

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

     访问静态方法和静态属性,直接类名调用  Person.静态成员

     定义的类内访问静态成员不用this,直接访问,print(name) print(getInfo())

     Dart 中的对象操作符:

            ? 条件运算符  as 类型转换  is 类型判断  .. 级联操作(连缀)

             p..name="aa"

               ..age=10

               ..printInfo()

3、继承 extends

      class Person {

            String name;

             num age;

             Person(this.name,this.age) ;

             printInfo(){

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

             }

      }

      class Web extends Person{

             String sex;

             Web(String name,num age,String sex):super(name,age){

                     this.sex = sex

             }

             run(){

                   print("${this.name}----{$this.age}----{$this.sex}")

             }

       }

       main(){

             Web w = new Web("aa",12)

              w.run()

              w.printInfo()

       }

4、抽象类 abstract

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

      抽象类不能被实例化,只有继承他的子类可以。

      abstract class Animal{

           eat() //抽象方法

           printInfo(){

                 print("抽象类的普通方法")

           }         

       }    

      class Dog extends Animal{

           eat() { print("dog!")}

       }

5、mixins--在类中混入其它功能

      在Dart中可以使用mixins实现类似多继承的功能

      使用条件:

              (1)作为mixins的类只能继承自Object类

              (2)作为mixins的类不能有构造函数

              (3)一个类可以mixins多个mixins类

              (4)mixins不是继承,也不是接口,是一种全新的特性

       class A {

             void printA(){print("A")}

        }     

       class B {

             void printB(){print("B")}

        }  

       class C with A,B {  // 类A,B不能有构造函数

             void printA(){print("B")}

       } 

      var c = new C()

      c.printA()

      c.printB()

6、泛型

      泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持(类型校验)

      T getData<T>(T value){

              return value;

      }

      getData<String>("www")

      getData<int>(12)

7、Dart中的库--import关键字引入

     library指令创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定

     有三种:

    (1)自定义的库

    (2)系统内置库

             import 'dart:math';

             import 'dart:io';

             import 'dart:convert';

     (3)pub包管理系统中的库

               http://pub.dev/packages

       async和await:

                 只有async方法才能使用await关键字调用方法

                 如果调用别的async方法必须使用await关键字

                 async是让方法变成异步,await是等待异步方法执行完成