Dart 是一種面向對象語言,包含類和基於 mixin 的繼承兩部分。每個對象是一個類的實例,並且 Object 是所有類的父類。基於 mixin 的繼承指的是每個類(除了 Object )都只有一個父類,類體還可以在多個類繼承中被重用。
void main() {
var user = User();
user.name = 'Tad'; //使用隱藏的 setter 方法
user.age = 45; //使用隱藏的 setter 方法
}
class User {
String name; //name 成員變數
int age; //age 成員變數
}
class User {
String name; //name 成員變數
int age; //age 成員變數
// 構造函數,需和類同名
User(String name, int age) {
this.name = name;
this.age = age;
}
}
this指向當前實例,故可簡化為:
class User {
String name; //name 成員變數
int age; //age 成員變數
// this指向當前實例,故可簡化為:
User(this.name, this.age) ;
}
void main() {
var user = User('Tad', 45);
}
class User {
String name; //name 成員變數
int age; //age 成員變數
// this指向當前實例,故可簡化為:
User(this.name, this.age) ;
// 命名的構造函數
User.fromJson(Map json) {
name = json['name'];
age = json['age'];
}
}
使用命名構造函數可以為一個類聲明多個構造函數,或者說是提供額外的聲明,完整用法如:
void main() {
//用 User() 創建一個使用者。(new 其實可以省略)
var user = new User('Tad', 45);
var jsonData = JSON.decode('{"name":Cat, "age":18}');
// 用 User().fromJson() 創建一個使用者。
var user2 = new User.fromJson(jsonData);
}
class User {
String name; //name 成員變數
int age; //age 成員變數
// this指向當前實例,故可簡化為:
User(this.name, this.age);
// 命名的構造函數
User.fromJson(Map json) {
name = json['name'];
age = json['age'];
}
}