1. 靜態成員、方法
1.1 static 宣告
1.2 靜態、非靜態方法可訪問靜態成員、呼叫方法;靜態方法不可訪問靜態成員、呼叫方法;
1.3 靜態成員、方法,屬於類的 ,不用例項化物件就可使用,不可使用super、this
class Person {
static String name = '張三';
int age = 20;
static void show() {
print(name);
} void printInfo() {
/*非靜態方法可以訪問靜態成員以及非靜態成員*/
print(name); //訪問靜態屬性
print(this.age); //訪問非靜態屬性
show(); //呼叫靜態方法
} static void printUserInfo() {
//靜態方法
print(name); //靜態屬性
show(); //靜態方法
}
} main() {
print(Person.name); // 靜態-不用例項化物件
Person.show(); Person p=new Person();靜態-new物件
p.printInfo(); Person.printUserInfo();
}
2. 物件操作符
as 型別轉換
is 型別判斷
.. 級聯操作 (連綴)
class Person {
String name;
num age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
main() { /****** is ******/
Person p=new Person('張三', 20);
if(p is Person){
p.name="李四";
}
p.printInfo(); /****** as ******/
var p1;
p1='';
p1=new Person('張三1', 20);
(p1 as Person).printInfo(); /****** ... ******/
Person p1 = new Person('張三1', 20);
p1.printInfo();
p1
..name = "李四"
..age = 30
..printInfo();// 修改屬性、呼叫方法
}
2. 繼承
1. 簡單繼承:extends
class Person {
String name='張三';
num age=20;
void printInfo() {
print("${this.name}---${this.age}");
}
}
class Web extends Person{}
2. super
: super(name, age) 預設值
class Person {
String name;
num age;
Person(this.name,this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
// 最新版本的dart中需要初始化不可為null的例項欄位,如果不初始化的話需要在屬性前面加上late class Web extends Person{
late String sex;
Web(String name, num age,String sex) : super(name, age){
this.sex=sex;
}
run(){
print("${this.name}---${this.age}--${this.sex}");
} }
3. 重寫父類方法 @override
class Web extends Person{
Web(String name, num age) : super(name, age); run(){
print('run');
} @override
work(){
print("${this.name}的工作是寫程式碼");
} }
4. 子類呼叫父類的方法 super.xxx