Dart語言--基礎內容

基礎

  • 主函數java

    void main ( ) { }設計模式

  • 聲明變量數組

    • var a num a int a double a bool a = true
    • final b = 0; 聲明只能賦值一次的變量
    • const a = 1; 常量
    • var a = const [1,2]; 聲明一個不可變的list

數據類型

  • 數據類型安全

    • Number
      • Int --整數型
      • double -- 浮點型
    • String
    • Boolean
    • List -- 數組
    • Map -- 鍵值對
  • 特殊運算符 ~/ 向下取整ide

  • 字符串操做
    • ''' hello dddd''' 表示多行字符串,保留換行函數

    • 'hello \n Dart' 會換行this

    • String aa = r''hello \n Dart" 不會換行.會輸出\n設計

    • 'abc' * 2 == 'abcabc'code

    • 'abc'[1] == 'b'對象

    • 字符串插值 " a + b = ${a + b}" ${xx}是個表達式 只有一個變量插值可省略寫成 $a

  • Map鍵值對

    • 建立 var qq = {'first' : 'Dart' , 'second' : 'java'};
    • 建立不可變Map var q = const { ,,,, }
    • 構造建立 var q = new Map()
    • 獲取value qq['frist']
    • 循環傳遞兩個值 qq.forEach ( f ); void f( key , value ){.......}
  • dynamic 類型 -- 動態類型
    • var a = 10; a = "xxx";
    • dynamic a = 20; a="xxx";
    • 泛型應用: var lis = new List\<dynamic\>(); 這樣聲明的lis 能夠使用各類類型的數據

運算符

  • ??= b ??= 10; b是空的則是10,有值則不作改變.
  • a~/=b 相似於 a+=b
  • var c = a ?? b a爲空時表達式爲b的值

函數

  • void main () {} void位置是返回類型 void指的是不須要返回類型
  • Dart定義函數 xxx(){} js中定義函數 function xx () {}
  • void fun(String name , int age) {xxxx}
  • 可選參數寫法
    • fun(String name , {int age, String kk}) fun('張三',age:20) 位置不固定
    • fun(String name , [int age , String kk]) fun('張三' , 20 ) 位置固定
  • 參數默認值
    • fun(String name , {int age = 30, String kk})
  • 匿名方法
    • () {} 可賦值給 變量 或者直接調用 .. 不能直接定義在最外層
    • ((){})() 自調.自執行

面向對象

class-類
  • class 聲明類 new建立對象.new可省略 全部對象默認繼承於Object類

  • class 屬性默認有getter和setter方法--java須要自定義

  • class final聲明的屬性是隻讀的

  • class 方法不能重載

  • //舉例
    class Person {
      String name;
      int age;
      void work(){
          print("name is $name , age is $age")
      },
        Person (String name , int age){//構造方法
            this.name = name;
            this.age = age;
        };
        Person (this.name,this.age);//構造方法簡寫
        Person.ddd (){}; //帶名稱的構造方法
    }
    //調用
    var person = new Person();//new Person('Tom'.20)--有構造時
    person.name = 'Tom';
    person.age = 20;
    person.work();  //name is Tom , age is 20
  • 使用_表示私有性. 默認一個Dart文件就是一個庫 .. Dart中可見性以Library(庫)爲單位 java的可見性設置十分多

  • class的計算屬性

    • class Rect{
          num width,height;
          num get area => width * height;// area{ return w*h }
          set area(val) {//給計算屬性area賦值時,處理數據,給其餘屬性賦值
              width = val / 20;
          };
      }
      var re = new Rect();
      re.height = 20;
      re.width = 10;
      print(re.area); //200
  • 構造方法-建立對象時調用的方法 可設置多個構造 .. 詳情看上上面的person

    • 命名構造方法
    • 常量構造方法----若是類是不可變狀態,能夠吧對象對應爲編譯期常量
      • 使用const聲明構造方法,而且全部變量都爲final,使用const聲明對象.能夠省略
    • 工廠構造方法
      • 相似於設計模式中的工廠模式 - -構造方法前加factory
      • 最大的不一樣 , 工廠構造能夠返回對象. ---???
    • 初始化列表 ---???
  • static 聲明靜態成員 --???
  • 對象操做符
    • ?.安全訪問成員 person?.work() 對象存在時調用work不存在則不執行
    • as 類型轉換
    • is is! 是不是指定類型
    • 級聯操做 person..name='xx'..age=20..work();
  • 對象call方法
    • 若是class實現了call(),則該class的對象能夠做爲方法使用
繼承
  • extends --繼承父類可見的屬性和方法. 子類能夠複寫父類方法/getter/setter
  • 單繼承/多態性
  • @override -- 指的是該方法是複寫的
  • 子類構造方法會默認調用父類的無名無參的構造方法. 若是父類沒有,則須要顯示調用
  • 構造方法執行順序: 子類初始化列表 - 父類構造 - 子類構造
抽象類
  • 抽象類 abstract ,不能實例化.只能被繼承實例化
接口
  • 類和接口是統一的
相關文章
相關標籤/搜索