7.4.抽離類為單獨文件
新建一個文件冒签,單獨存放一個類钟病,例如:Person類抽離到person.dart文件中
class Person {
final String name;
final num age;
final String gender;
const Person(this.name, this.age, this.gender);
}
引入這個Person類
import './person.dart';
void main() {
var p = new Person("xiaoqiang", 18, "男");
print(p.gender);
}
#7.5.初始化列表
初始化列表就是在構(gòu)造方法體執(zhí)行之前進行一系列初始化操作,常用于設置final變量的值
void main() {
// 注意:new關(guān)鍵字可以省略
// var p = new Person("xiaoqiang", 12, "男");
// print(p.name);
// 創(chuàng)建對象的時候票唆,可以使用fn構(gòu)造方法
var p2 = new Person.fn("xiaohong", 12);
}
class Person {
String name;
num age;
final String gender;
Person(this.name, this.age, this.gender){
print(this.name);
print(this.age);
print(this.gender);
}
// 在構(gòu)造方法后面加冒號來設置初始化列表屹徘,每個初始化變量之間用逗號隔開
Person.fn(name, age):gender="男", name="xiaoli"{
print(name);
print(age);
}
}
#7.6.靜態(tài)成員
可以使用static關(guān)鍵字來實現(xiàn)類級別的變量和函數(shù)噪伊,通俗的說靜態(tài)成員就是可以直接通過類名稱來調(diào)用
void main() {
print(Person.name);
Person.showName();
}
class Person {
static String name;
static num age;
static void showName () {
name = "xiaoqiang";
print(name);
}
void showAge () {
// 非靜態(tài)成員是可以直接使用靜態(tài)成員
age = 10;
print(age);
}
}
注意:靜態(tài)成員不能訪問非靜態(tài)成員
void main() {
print(Person.name);
Person.showName();
var p = new Person();
p.showAge();
}
class Person {
static String name;
static num age;
String gender = '男';
static void showName() {
name = "xiaoqiang";
print(name);
// 報錯 靜態(tài)方法不能訪問非靜態(tài)的屬性
print(gender);
}
void showAge() {
// 非靜態(tài)成員是可以直接使用靜態(tài)成員
age = 10;
print(age);
}
}
注意2: 定義靜態(tài)常量 需要用 static const ,例如: static const gender = "男", 定義成常量后啦吧,在靜態(tài)方法中可以訪問
#7.7.對象操作符
條件成員訪問 ?.
void main() {
var p = new Person();
// 如果p為空就不執(zhí)行showName方法 如果p不為空就會執(zhí)行
p?.showName();
}
class Person {
String name;
static num age;
showName() {
print(name);
}
}
is 和 is!
void main() {
var p = new Person();
if (p is Person) {
p.showName();
} else {
print("不屬于這個類");
}
}
class Person {
String name;
static num age;
showName() {
print(111);
print(name);
}
}
..級聯(lián)操作
void main() {
new Person()
..name = "小強"
..age = 20
..showName();
}
class Person {
String name;
num age;
showName() {
print(111);
print(name);
}
}
#7.8.call方法
當類的內(nèi)部定義call方法拙寡,那么對象可以作為方法調(diào)用
void main() {
var p = new Person();
p();
p.showName();
}
class Person {
String name;
num age;
showName() {
print(111);
print(name);
}
call() {
print('call 方法被執(zhí)行了');
}
}