Flutter (九)變量偶器、數(shù)據(jù)類型斩萌、方法定義缝裤、類定義、多繼承颊郎、抽象類

鑒于很多朋友私信讓分享一些dart基礎(chǔ)知識,今天就給大家分享一些dart基本操作1锓伞!姆吭!

  • 變量:一旦附上值榛做,他的數(shù)據(jù)類型就定了 不能在賦其他類型值
1.
var username = 'Flutter';//username 就定了是字符串類型
username = 123;//此時再賦整型就行報錯
2.
Object和dynamic 都是大的類型
  dynamic a = 'goood job'; //dynamic是可以推斷出值是什么類型
  Object  b = 'goodd job';
  print(a.length);
  print(b.length);//b 是不具備length方法
  • 常量:設(shè)置一次值之后就不能在變了
1.
final psw1 = 'Flutter';
2.
const psw2 = 'Flutter';
  • 數(shù)據(jù)類型
int psw3 = 110;
double psw4 = 11.1;
//字符串轉(zhuǎn)int
int psw5= int.parse('119');
double psw6 = double.parse('111.11');
//int轉(zhuǎn)字符串
String psw7 = psw3.toString();
//四舍五入并且保留兩位小數(shù)
String psw8 = 123.2262.toStringAsFixed(2);
print(psw8);//值是123.23

//bool類型
bool results = 123 > 110;
print(results);//打印結(jié)果:true
bool results = 1 == '1';
print(results);//打印結(jié)果:false

//List 是數(shù)組類型
List list = [1,3,5,7,9];//創(chuàng)建數(shù)組方式1
List newList = new List();//創(chuàng)建數(shù)組方式2
newList.add(2);//add 一個值進(jìn)去
newList.addAll([4,6,8,10]);//add  一個數(shù)組進(jìn)去
print(newList);//打印結(jié)果:2 4 6 8 10
print(newList.length);//打印結(jié)果:5
print(newList.first);//打印第一個值        打印結(jié)果:2
print(newList.last);//打印最后一個值     打印結(jié)果:10
print(newList[2]);//打印下標(biāo)為2 的值    打印結(jié)果:6

//Map類型  對象類型
Map obj = {'x':1,'y':2,'z':3};//創(chuàng)建方式 1
Map newObj = new Map();//創(chuàng)建方式 2
newObj['x'] = 1;
newObj['y'] = 2;
print(newObj);//打印結(jié)果:{x: 1, y: 2}
print(obj.containsKey('x'));//判斷是否包含x的key    打印結(jié)果:true
print(obj.containsKey('a'));//                     打印結(jié)果:false
obj.remove('y');//刪除Map中對應(yīng)的值                       
print(obj);//                                      打印結(jié)果:{x: 1, z: 3}

  • 定義方法
//無參  有返回值
//返回參數(shù)是字符串類型  方法名是getUserName
String getUserName(){
  return 'hello world';
}
String userName = getUserName();//調(diào)用

//有參  有返回值
//返回參數(shù)是字符串類型   方法名getPersionInfo  接收的參數(shù)是userId
String getPersionInfo(int userId){
  Map userInfon = {
    '111':'zhangsan',
    '222':'lisi',
  };
  return userInfon[userId.toString()];
}
String userId = getPersionInfo(111);//調(diào)用
print(userId);//打印結(jié)果:zhangsan

//可選參數(shù)
//1.可選參數(shù) [ ]  中括號代表可選參數(shù)   不加中括號的話就是必傳的參數(shù)
int addAge(int age1,[int age2]) {
  return age1+(age2 != null ? age2 : 0);
}
int age = addAge(1,2);//調(diào)用
print(age);//打印結(jié)果:3
//2.可以給參數(shù)賦上默認(rèn)值  賦上默認(rèn)值要給參數(shù)加上大括號
int addAge2([int age1,int age2 = 0]){
  return age1+age2;
}
int age2 = addAge2(1,2);//調(diào)用
print(age2);//打印結(jié)果:3

//匿名函數(shù)  for循環(huán)遍歷數(shù)組
var list = ['abc','cde','afg'];
list.forEach((str){
  print(str);
});
打印結(jié)果:abc  cde  afg
  • 類的使用
//1.只是創(chuàng)建了一個類里面有2個屬性
class Person {
  int age;
  String name;
}
p.age = 23;
print(p.age);

//2.具有實(shí)例化的方式創(chuàng)建一個類
class Person2 {
  //1.可以給這個類定義一些屬性
  int age;
  String name;
  //構(gòu)造函數(shù) 就是一個同名的方法
  Person2(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以給這個類定義一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
}
var p2 = new Person2(23,'zhansgan');//實(shí)例化的方式創(chuàng)建
print(p2.name);//打印結(jié)果:zhansgan
p2.sayHello();  //打印結(jié)果:My name is:zhansgan(調(diào)用了Person2里面的sayHello方法)
  • 類的繼承
//1.創(chuàng)建了Worker類  繼承 Person2
class Worker extends Person2 {//繼承用  extends
  int salary;//比父類多了一個屬性salary
  Worker(int age, String name,int salary) : super(age, name){//新添了一個屬性salary
    this.salary = salary;
  }
  @override  //告訴編譯器 我重寫了父類的同名方法
  void sayHello(){
    super.sayHello();//先調(diào)用了父類的sayHello
    print('My salary is:'+this.salary.toString());
  }
}
//外界使用
var w = new Worker(20, 'lisi', 1000);
w.sayHello();//打印結(jié)果是 先打印父類的sayHello方法   再打印Worker的sayHello方法
  • dart 里面只能單繼承 不能繼承多個父類 如果有需要繼承多個父類的需求需要用混合的方式實(shí)現(xiàn)
    比如看下面例子:
//1.定義了一個Eat類
class Eat {
  void eat(){
    print('吃飯');
  }
  void sayHello() {
    print('say hello in Eat');
  }
}
//2.定義了一個Sleep類
class Sleep {
  void sleep(){
    print('睡覺');
  }
  void sayHello() {
    print('say hello in Sleep');
  }
}
//3.定義了一個Person類混合了Eat和Sleep類
class Person with Eat,Sleep {//多繼承  把Eat 和 Sleep 都混合到Person 里面去   這時Person3就具備了eat和sleep的方法
  //1.可以給這個類定義一些屬性
  int age;
  String name;
  //構(gòu)造函數(shù)
  Person3(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以給這個類定義一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
}
var p = new Person(18, 'wangwu');
p.eat();//這時p 具備了Eat類的方法
p.sleep();//這時p 具備了Sleep類的方法
p.sayHello();//p 還具備了我自己的方法  //注意 如果混合的類里面有和自身類同名的方法的時候優(yōu)先使用自身類的方法、其次是用混合最后一個類的方法
  • 抽象類:就是我有一個想法 但是我不知道怎么實(shí)現(xiàn)内狸。所以我就先把我的想法說出來检眯。
    抽象類不能實(shí)例化 所以用抽象類就是為了定義一個規(guī)則 讓別人遵守這個規(guī)則
//定義一個抽象類
abstract class Animal {
  //這是一個方法的實(shí)現(xiàn)
//  void have_a_baby(){
//    print(have_a_baby);
//  }
  //抽象方法  只有方法的定義
  void have_a_baby();
}
//這時再創(chuàng)建一個類繼承Animal抽象類
class Person extends Animal {
  //1.可以給這個類定義一些屬性
  int age;
  String name;
  //構(gòu)造函數(shù)
  Person3(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以給這個類定義一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
  //3.實(shí)現(xiàn)have_a_baby  這時Person繼承了Animal類。但是Animal類里面的方法沒有實(shí)現(xiàn)昆淡,就會報錯,此時需要子類實(shí)現(xiàn)這個方法
  @override
  void have_a_baby() {
    // TODO: implement have_a_baby
    print('have_a_baby');
  }
}

QQ:522608370

點(diǎn)個贊唄??C倘场!昂灵!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末避凝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眨补,更是在濱河造成了極大的恐慌管削,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤涌,死亡現(xiàn)場離奇詭異佩谣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)实蓬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門茸俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人安皱,你說我怎么就攤上這事调鬓。” “怎么了酌伊?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵腾窝,是天一觀的道長。 經(jīng)常有香客問我居砖,道長虹脯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任奏候,我火速辦了婚禮循集,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔗草。我一直安慰自己咒彤,他們只是感情好疆柔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镶柱,像睡著了一般旷档。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇拆,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天鞋屈,我揣著相機(jī)與錄音,去河邊找鬼查吊。 笑死谐区,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逻卖。 我是一名探鬼主播宋列,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼评也!你這毒婦竟也來了炼杖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤盗迟,失蹤者是張志新(化名)和其女友劉穎坤邪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罚缕,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艇纺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邮弹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黔衡。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腌乡,靈堂內(nèi)的尸體忽然破棺而出盟劫,到底是詐尸還是另有隱情,我是刑警寧澤与纽,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布侣签,位于F島的核電站,受9級特大地震影響急迂,放射性物質(zhì)發(fā)生泄漏影所。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一僚碎、第九天 我趴在偏房一處隱蔽的房頂上張望猴娩。 院中可真熱鬧,春花似錦、人聲如沸胀溺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仓坞。三九已至,卻和暖如春腰吟,著一層夾襖步出監(jiān)牢的瞬間无埃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工毛雇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫉称,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓灵疮,卻偏偏與公主長得像织阅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子震捣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔荔棉,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,739評論 2 9
  • 一. Dart入口方法 每一個flutter項目的lib目錄里面都有一個main.dart蒿赢。這個文件就是flutt...
    騎馬縱天下閱讀 2,518評論 0 1
  • 也許并無出路 誰都不去在意 那誰還有心思 無知才是真真切切的 沉默并不是真心的 沒有力氣去對抗 放任自己 是討好了...
    駱訓(xùn)文_a928閱讀 157評論 0 1
  • 七羡棵、Go語言切片(Slice) Go 語言切片是對數(shù)組的抽象壹若。 Go 數(shù)組的長度不可改變,在特定場景中這樣的集合就...
    屜屜閱讀 202評論 0 0
  • 五一皂冰,雨店展,觀花,習(xí)字灼擂,唯愛納蘭壁查,山一程,水一程剔应,風(fēng)一更睡腿,雪一更。
    黨向陽閱讀 201評論 5 4