java中dart類詳細(xì)講解
dart 是一個(gè)面向?qū)ο蟮恼Z(yǔ)言;面向?qū)ο笥?/p>
- 繼承
- 封裝
- 多態(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');第一種
//推薦使用這樣的寫,通過this去訪問
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() {
//推薦使用這樣的寫法
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)寫
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ù)是可以寫多個(gè)的;但是默認(rèn)構(gòu)造函數(shù)只能寫一個(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ǔ)言不一樣。沒有向public private 這樣的訪問修飾符
但是我們可以使用_把一個(gè)屬性或者方法定義成私有的,(就是在變量或者方法的前面添加_;并且要單獨(dú)把他抽離出去變成一個(gè)文件 放在lib目錄下,這樣外面就不能夠訪問了);
但是個(gè)人覺得這種沒有實(shí)質(zhì)的意義 如果要訪問這個(gè)私有的方法,那么在類種添加一個(gè)共有的方法;去訪問這個(gè)私有的方法;訪問在return回去; 就可以訪問這個(gè)私有的方法了 私有方法,只有在當(dāng)前類中訪問哈 在lib目錄下的animal.dart文件;
內(nèi)容如下
class Animal {
String _name = 'dog';//這是私有的方法,只當(dāng)前這個(gè)類可以訪問;其他類是不能夠訪問的哈~;
// 如果非要訪問這個(gè)類,可以通過共有方法來訪問
// 通過公共方法來訪問這個(gè)類;間接訪問
getName(){
print(this._name);
}
int age = 19;
void getInfo() {
//推薦使用這樣的寫法
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í)候直接通過訪問屬性的方式訪問方法
}
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 我們這直接通過屬性獲取值
}
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ān)于dart類詳細(xì)講解的文章就介紹到這了,更多相關(guān)dart類講解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot配置文件中數(shù)據(jù)庫(kù)密碼加密兩種方案(推薦)
SpringBoot項(xiàng)目經(jīng)常將連接數(shù)據(jù)庫(kù)的密碼明文放在配置文件里,安全性就比較低一些,尤其在一些企業(yè)對(duì)安全性要求很高,因此我們就考慮如何對(duì)密碼進(jìn)行加密,文中給大家介紹加密的兩種方式,感興趣的朋友一起看看吧2019-10-10
Json轉(zhuǎn)list二層解析轉(zhuǎn)換代碼實(shí)例
這篇文章主要介紹了Json轉(zhuǎn)list二層解析轉(zhuǎn)換代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
淺談Springboot下引入mybatis遇到的坑點(diǎn)
這篇文章主要介紹了Springboot下引入mybatis遇到的坑點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot實(shí)現(xiàn)動(dòng)態(tài)多線程并發(fā)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)動(dòng)態(tài)多線程并發(fā)定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Eclipse中改變默認(rèn)的workspace的方法及說明詳解
eclipse中改變默然的workspace的方法有哪幾種呢?接下來腳本之家小編給大家介紹Eclipse中改變默認(rèn)的workspace的方法及說明,對(duì)eclipse改變workspace相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-04-04
SpringBoot異步調(diào)用方法實(shí)現(xiàn)場(chǎng)景代碼實(shí)例
Java實(shí)戰(zhàn)之電影在線觀看系統(tǒng)的實(shí)現(xiàn)

