Dart语言--基础内容
基礎(chǔ)
主函數(shù)
void main ( ) { }
聲明變量
- var a num a int a double a bool a = true
- final b = 0; 聲明只能賦值一次的變量
- const a = 1; 常量
- var a = const [1,2]; 聲明一個(gè)不可變的list
數(shù)據(jù)類型
數(shù)據(jù)類型
- Number
- Int --整數(shù)型
- double -- 浮點(diǎn)型
- String
- Boolean
- List -- 數(shù)組
- Map -- 鍵值對(duì)
- Number
特殊運(yùn)算符 ~/ 向下取整
- 字符串操作
''' hello dddd''' 表示多行字符串,保留換行
'hello \n Dart' 會(huì)換行
String aa = r''hello \n Dart" 不會(huì)換行.會(huì)輸出\n
'abc' * 2 == 'abcabc'
'abc'[1] == 'b'
字符串插值 " a + b = ${a + b}" ${xx}是個(gè)表達(dá)式 只有一個(gè)變量插值可省略寫成 $a
Map鍵值對(duì)
- 創(chuàng)建 var qq = {'first' : 'Dart' , 'second' : 'java'};
- 創(chuàng)建不可變Map var q = const { ,,,, }
- 構(gòu)造創(chuàng)建 var q = new Map()
- 獲取value qq['frist']
- 循環(huán)傳遞兩個(gè)值 qq.forEach ( f ); void f( key , value ){.......}
- dynamic 類型 -- 動(dòng)態(tài)類型
- var a = 10; a = "xxx";
- dynamic a = 20; a="xxx";
- 泛型應(yīng)用: var lis = new List\<dynamic\>(); 這樣聲明的lis 可以使用各種類型的數(shù)據(jù)
運(yùn)算符
- ??= b ??= 10; b是空的則是10,有值則不做改變.
- a~/=b 類似于 a+=b
- var c = a ?? b a為空時(shí)表達(dá)式為b的值
函數(shù)
- void main () {} void位置是返回類型 void指的是不需要返回類型
- Dart定義函數(shù) xxx(){} js中定義函數(shù) function xx () {}
- void fun(String name , int age) {xxxx}
- 可選參數(shù)寫法
- fun(String name , {int age, String kk}) fun('張三',age:20) 位置不固定
- fun(String name , [int age , String kk]) fun('張三' , 20 ) 位置固定
- 參數(shù)默認(rèn)值
- fun(String name , {int age = 30, String kk})
- 匿名方法
- () {} 可賦值給 變量 或者直接調(diào)用 .. 不能直接定義在最外層
- ((){})() 自調(diào).自執(zhí)行
class-類 class 聲明類 new創(chuàng)建對(duì)象.new可省略 所有對(duì)象默認(rèn)繼承于Object類
class 屬性默認(rèn)有g(shù)etter和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){//構(gòu)造方法this.name = name;this.age = age;};Person (this.name,this.age);//構(gòu)造方法簡(jiǎn)寫Person.ddd (){}; //帶名稱的構(gòu)造方法
}
//調(diào)用
var person = new Person();//new Person('Tom'.20)--有構(gòu)造時(shí)
person.name = 'Tom';
person.age = 20;
person.work(); //name is Tom , age is 20
使用_表示私有性. 默認(rèn)一個(gè)Dart文件就是一個(gè)庫(kù) .. Dart中可見性以Library(庫(kù))為單位 java的可見性設(shè)置十分多
class的計(jì)算屬性
- class Rect{num width,height;num get area => width * height;// area{ return w*h }set area(val) {//給計(jì)算屬性area賦值時(shí),處理數(shù)據(jù),給其他屬性賦值width = val / 20;};
}
var re = new Rect();
re.height = 20;
re.width = 10;
print(re.area); //200
構(gòu)造方法-創(chuàng)建對(duì)象時(shí)調(diào)用的方法 可設(shè)置多個(gè)構(gòu)造 .. 詳情看上上面的person
- 命名構(gòu)造方法
- 常量構(gòu)造方法----如果類是不可變狀態(tài),可以吧對(duì)象對(duì)應(yīng)為編譯期常量
- 使用const聲明構(gòu)造方法,并且所有變量都為final,使用const聲明對(duì)象.可以省略
- 工廠構(gòu)造方法
- 類似于設(shè)計(jì)模式中的工廠模式 - -構(gòu)造方法前加factory
- 最大的不同 , 工廠構(gòu)造可以返回對(duì)象. ---???
- 初始化列表 ---???
- static 聲明靜態(tài)成員 --???
- 對(duì)象操作符
- ?.安全訪問成員 person?.work() 對(duì)象存在時(shí)調(diào)用work不存在則不執(zhí)行
- as 類型轉(zhuǎn)換
- is is! 是否是指定類型
- 級(jí)聯(lián)操作 person..name='xx'..age=20..work();
- 對(duì)象call方法
- 如果class實(shí)現(xiàn)了call(),則該class的對(duì)象可以作為方法使用
繼承
- extends --繼承父類可見的屬性和方法. 子類可以復(fù)寫父類方法/getter/setter
- 單繼承/多態(tài)性
- @override -- 指的是該方法是復(fù)寫的
- 子類構(gòu)造方法會(huì)默認(rèn)調(diào)用父類的無(wú)名無(wú)參的構(gòu)造方法. 如果父類沒有,則需要顯示調(diào)用
- 構(gòu)造方法執(zhí)行順序: 子類初始化列表 - 父類構(gòu)造 - 子類構(gòu)造
抽象類
- 抽象類 abstract ,不能實(shí)例化.只能被繼承實(shí)例化
接口
- 類和接口是統(tǒng)一的
class 聲明類 new創(chuàng)建對(duì)象.new可省略 所有對(duì)象默認(rèn)繼承于Object類
class 屬性默認(rèn)有g(shù)etter和setter方法--java需要自定義
class final聲明的屬性是只讀的
class 方法不能重載
使用_表示私有性. 默認(rèn)一個(gè)Dart文件就是一個(gè)庫(kù) .. Dart中可見性以Library(庫(kù))為單位 java的可見性設(shè)置十分多
class的計(jì)算屬性
- class Rect{num width,height;num get area => width * height;// area{ return w*h }set area(val) {//給計(jì)算屬性area賦值時(shí),處理數(shù)據(jù),給其他屬性賦值width = val / 20;}; } var re = new Rect(); re.height = 20; re.width = 10; print(re.area); //200
構(gòu)造方法-創(chuàng)建對(duì)象時(shí)調(diào)用的方法 可設(shè)置多個(gè)構(gòu)造 .. 詳情看上上面的person
- 命名構(gòu)造方法
- 常量構(gòu)造方法----如果類是不可變狀態(tài),可以吧對(duì)象對(duì)應(yīng)為編譯期常量
- 使用const聲明構(gòu)造方法,并且所有變量都為final,使用const聲明對(duì)象.可以省略
- 工廠構(gòu)造方法
- 類似于設(shè)計(jì)模式中的工廠模式 - -構(gòu)造方法前加factory
- 最大的不同 , 工廠構(gòu)造可以返回對(duì)象. ---???
- 初始化列表 ---???
- ?.安全訪問成員 person?.work() 對(duì)象存在時(shí)調(diào)用work不存在則不執(zhí)行
- as 類型轉(zhuǎn)換
- is is! 是否是指定類型
- 級(jí)聯(lián)操作 person..name='xx'..age=20..work();
- 如果class實(shí)現(xiàn)了call(),則該class的對(duì)象可以作為方法使用
轉(zhuǎn)載于:https://www.cnblogs.com/Vayne-N/p/11519153.html
總結(jié)
以上是生活随笔為你收集整理的Dart语言--基础内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于js私钥加密公钥解密的问题
- 下一篇: Netlib文件转化为mps文件