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