欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中dart類詳細(xì)講解

 更新時(shí)間:2021年02月09日 21:07:39   作者:流年少年  
這篇文章主要介紹了dart類詳細(xì)講解,實(shí)例講解的很清晰,有對(duì)于這方面不太清楚的同學(xué)可以跟著學(xué)習(xí)下

dart 是一個(gè)面向?qū)ο蟮恼Z(yǔ)言;面向?qū)ο笥?/p>

  1. 繼承
  2. 封裝
  3. 多態(tài)

dart的所有東西都是對(duì)象,所有的對(duì)象都是繼承與object類

一個(gè)類通常是由屬性和方法組成的

在dart中如果你要自定義一個(gè)類的話,將這個(gè)類放在main函數(shù)外面

類名使用大駝峰方法名使用小駝峰

1.定義這個(gè)類的屬性和方法

//定義一個(gè)類的屬性和方法
class Person {
 String name = '張三';
 int age = 19;
 void getInfo() {
  // print('我叫$name,今年$age');第一種
  //推薦使用這樣的寫(xiě),通過(guò)this去訪問(wèn)
  print("${this.name}====${this.age}");
 }
}

//使用類中的屬性和方法
void main() {
 // 調(diào)用Perso這個(gè)類 首先需要實(shí)例化這個(gè)類
 // Person p = new Person(); // 等價(jià) var p=new Person
 var p = new Person();
 print(p.age);
 p.getInfo();
}

2 .改變類中的屬性和方法

class Person {
 String name = '張三';
 int age = 19;
 void getInfo() {
  //推薦使用這樣的寫(xiě)法
  print("${this.name}====${this.age}");
 }
 //限制類型,更改類中的屬性和方法
 SetUserinfo(int age) {
  this.age = age;
 }
}

void main() {
 // 調(diào)用Perso這個(gè)類 首先需要實(shí)例化這個(gè)類
 Person p = new Person(); // 等價(jià) var p=new Person
 print(p.age);//19
 p.getInfo();//張三====19
 p.SetUserinfo(100);
 p.getInfo();//張三====100
}

3.默認(rèn)構(gòu)造函數(shù)

class Person {
  //這是一個(gè)默認(rèn)構(gòu)造函數(shù)
 Person() {
  print('默認(rèn)構(gòu)造函數(shù)里面的內(nèi)容,該方法在實(shí)例化的時(shí)候會(huì)自動(dòng)出發(fā)哈');
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)自動(dòng)觸發(fā)默認(rèn)構(gòu)造函數(shù)
 Person p = new Person(); // 等價(jià) var p=new Person
}

4. 動(dòng)態(tài)傳遞,類多次實(shí)例化,打印不同的值

class Person {
 String name;
 int age;
 Person(String name, int age) {
  this.name = name;
  this.age = age;
 }
 void getuserInfo() {
  print(this.name);
  print(this.age);
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)自動(dòng)觸發(fā)
 Person p = new Person('張三', 10); // 等價(jià) var p=new Person
 p.getuserInfo();

 //這個(gè)類可以實(shí)例化多次的哈
 Person v = new Person('張三1', 100); // 等價(jià) var p=new Person
 v.getuserInfo();
}

5.默認(rèn)構(gòu)造函數(shù)簡(jiǎn)寫(xiě)

class Person {
 String name;
 int age;
 
 // Person(String name, int age) {
 //  this.name = name;
 //  this.age = age;
 // }
 //上面注釋的代碼等價(jià)于 Person(this.name, this.age);
 Person(this.name, this.age);
 void getuserInfo() {
  print(this.name);
  print(this.age);
 }
}

6.命名構(gòu)造函數(shù),命名構(gòu)造函數(shù)是可以寫(xiě)多個(gè)的;但是默認(rèn)構(gòu)造函數(shù)只能寫(xiě)一個(gè)

class Person {
 //我是默認(rèn)的構(gòu)造函數(shù)
 Person() {
  print('我是默認(rèn)的構(gòu)造函數(shù)');
 }
 // 命名構(gòu)造函數(shù)
 Person.mynow() {
  print('我是命名構(gòu)造函數(shù)');
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Person p = new Person(); // 等價(jià) var p=new Person
 Person v = new Person.mynow(); // 觸發(fā)命名構(gòu)造函數(shù)
}

7.類抽離出去,單獨(dú)放一個(gè)文件夾中

在項(xiàng)目的根目錄創(chuàng)建一個(gè)文件夾 lib
在lib文件夾中創(chuàng)建一個(gè)文件 xxx.dart內(nèi)容如下

class Person {
 //我是默認(rèn)的構(gòu)造函數(shù)
 Person() {
  print('我是默認(rèn)的構(gòu)造函數(shù)');
 }
 // 命名構(gòu)造函數(shù)
 Person.mynow() {
  print('我是命名構(gòu)造函數(shù)');
 }
}


在需要的某個(gè)文件中引入
import 'lib/xxx.dart';
void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Person p = new Person(); // 等價(jià) var p=new Person
 Person v = new Person.mynow(); // 觸發(fā)命名構(gòu)造函數(shù)
}

8.dart修飾符

dart和其他面向?qū)ο蟮恼Z(yǔ)言不一樣。沒(méi)有向public private 這樣的訪問(wèn)修飾符

但是我們可以使用_把一個(gè)屬性或者方法定義成私有的,(就是在變量或者方法的前面添加_;并且要單獨(dú)把他抽離出去變成一個(gè)文件 放在lib目錄下,這樣外面就不能夠訪問(wèn)了);

但是個(gè)人覺(jué)得這種沒(méi)有實(shí)質(zhì)的意義 如果要訪問(wèn)這個(gè)私有的方法,那么在類種添加一個(gè)共有的方法;去訪問(wèn)這個(gè)私有的方法;訪問(wèn)在return回去; 就可以訪問(wèn)這個(gè)私有的方法了 私有方法,只有在當(dāng)前類中訪問(wèn)哈 在lib目錄下的animal.dart文件;

內(nèi)容如下

class Animal {
 String _name = 'dog';//這是私有的方法,只當(dāng)前這個(gè)類可以訪問(wèn);其他類是不能夠訪問(wèn)的哈~;
 // 如果非要訪問(wèn)這個(gè)類,可以通過(guò)共有方法來(lái)訪問(wèn)
 
 // 通過(guò)公共方法來(lái)訪問(wèn)這個(gè)類;間接訪問(wèn)
 getName(){
  print(this._name);
 }

 int age = 19;
 void getInfo() {
  //推薦使用這樣的寫(xiě)法
  print("${this._name}====${this.age}");
 }

 //限制類型,更改類中的屬性和方法
 SetUserinfo(int age) {
  this.age = age;
 }
}

9. 計(jì)算矩形的面積將他改為get方法

class Rect {
 num width;
 num height;
 Rect(this.width, this.height);
 getUserINfo() {
  return (this.width * this.height);
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Rect p = new Rect(10, 4); // 等價(jià) var p=new Person
 print(p.getUserINfo());
}

將上面的代碼改為get方法

class Rect {
 num width;
 num height;
 Rect(this.width, this.height);
 // getUserINfo() {
 //  return (this.width * this.height);
 // }

 // 將上面的代碼該為get
 get getUserINfo {
  return (this.width * this.height);
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Rect p = new Rect(10, 4);
 // print(p.getUserINfo());
 // 將上面的代碼改為get方法的調(diào)用
 print(p.getUserINfo);//調(diào)用的時(shí)候直接通過(guò)訪問(wèn)屬性的方式訪問(wèn)方法
}

10.dart 中的set 方法

class Rect {
 num width;
 num height;
 Rect(this.width, this.height);
 // 設(shè)置值的時(shí)候。我們使用了set方法
 set areaHeight(value) {
  this.height = value;
 }
 get area {
  return this.height;
 }
}
void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Rect p = new Rect(10, 4);
 p.areaHeight = 6; //當(dāng)一個(gè)類的內(nèi)部使用了set方法的時(shí)候。我們直接使用賦值;
 print(p.area); //內(nèi)部使用了get 我們這直接通過(guò)屬性獲取值
}

11.在實(shí)例化之前,給類內(nèi)部初始化數(shù)值

class Rect {
 num width;
 num height;
 // 在實(shí)例化之前,給類內(nèi)部初始化數(shù)值
 Rect()
   : height = 2,
    width = 10 {}
 get area {
  return this.height * this.width;
 }
}

void main() {
 // 實(shí)例化的時(shí)候,會(huì)默認(rèn)構(gòu)造自動(dòng)觸發(fā)
 Rect p = new Rect();
 print(p.area); //內(nèi)部使用了get 我們這直接通過(guò)屬性獲取值
}

到此這篇關(guān)于dart類詳細(xì)講解的文章就介紹到這了,更多相關(guān)dart類講解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論