1、類和對象
1)使用關鍵字class聲明一個類
2)使用關鍵字new創建一個對象,new可省略
3)所有對象都繼承於Object類
2、屬性和方法
1)屬性默認生成getter和setter方法
2)使用final聲明的屬性只有getter方法(只讀)
3)屬性和方法通過.訪問
4)方法不能被重載
void main() {
var person = new Person();
person.name = "Tom";
person.age = 20;
print(person.name);
person.work();
}
class Person {
String name;
int age;
//final String address;
void work() {
print("Name is $name , Age is $age");
}
}
運行結果:
Tom
Name is Tom , Age is 20
3、類及成員可見性
1)Dart中的可見性以library(庫)爲單位
2)默認情況下,每個Dart文件就是一個庫
3)使用_表示庫的私有性
4)使用import導入庫
(1)person.dart
class Person {
String name;
int age;
void work() {
print("Name is $name , Age is $age");
}
}
(2)class_and_object.dart.dart
import 'persion.dart';
void main() {
var person = new Person();
person.name = "Tom";
person.age = 20;
print(person.name);
person.work();
}
運行結果:
Tom
Name is Tom , Age is 20
4、計算屬性
顧名思義,計算屬性的值是通過計算而來的,本身不存儲值
計算屬性賦值,其實是通過計算轉換到其他實例變量
calculated_property.dart
void main() {
var rect = new Rectangle();
rect.height = 20;
rect.width = 10;
//print(rect.area());
print(rect.area);
rect.setWidth = 300;
print(rect.width);
}
class Rectangle {
num width, height;
//1.
// num area() {
// return width * height;
// }
//2.
// num get area {
// return width * height;
// }
//3.
num get area => width * height;
set setWidth(value) {
width = value / 20;
}
}
運行結果:200