概念
Dart 是支持基于 mixin 继承机制的面向对象语言,所有对象都是一个类的实例,而除了 Null 以外的所有的类都继承自 Object 类。 基于 mixin 的继承 意味着尽管每个类(top class Object? 除外)都只有一个超类,一个类的代码可以在其它多个类继承中重复使用。 扩展方法 是一种在不更改类或创建子类的情况下向类添加功能的方式。
类运算符
| Operator | Meaning |
|---|---|
| as | 类型转换(也用作指定 类前缀)) |
| is | 如果对象是指定类型则返回 true |
| is! | 如果对象是指定类型则返回 false |
| ... | 级联操作 |
定义类
/// 定义一个person的类
class Person {}
/// 实例化类
var p= new Person();
类初始化默认值
/// 定义一个person的类
class Person {
String? name;
int? age;
Person():name="zhangsan",age=20{}
}
/// 实例化类
var p= new Person();
构造函数
默认构造函数
/// 定义一个person的类
class Person {
String? name;
int? age;
Person(String name,int age){
this.name=name;
this.age=age;
}
///简化构造
Person(this.name,this.age)
}
/// 实例化类
var p= new Person("张三",18);
匿名构造函数
/// 定义一个person的类
class Person {
String? name;
int? age;
//匿名构造函数
Person.setName(String name){
this.name=name;
}
//简写
Person.setName(this.name)
printName(){
print(this.name)
}
}
注意:匿名构造函数可以有多个,但是默认构造函数只能一个
属性
私有属性
使用下划线定义私有属性,需要定义到单独的文件才生效
String _name="zhangsan";
方法
私有方法
使用下划线定义私有方法 ,需要定义到单独的文件才生效
get/set
get/set 在vue 中其实就是computed 计算属性
class Rect {
int width = 0;
int height = 0;
Rect(this.width, this.height);
int area() {
return width * height;
}
///get
int get area1 {
return width * height;
}
//set
set area2(int height) => this.height = height;
// set area2(int height){
// this.height = height;
// }
///这种是不行的,必须要有一个返回值
// set area2(this.height)
}
main() {
Rect p = Rect(10, 10);
var area = p.area();
print(area);
///调用和方法不一样,不需要括号
p.area2 = 30;
print(p.area1);
}
静态成员/方法
1、使用static 关键字来定义静态成员/方法
2、静态成员不能访问非静态成员,非静态成员可以访问静态成员
3、静态成员不需要实例化类,直接通过 类.静态成员 访问
/// 定义一个person的类
class Person {
String? name;
int? age;
static String nickName="lisi";
static void showName(){
print(nickName)
}
void showName1(){
//print(nickName)//error
// showName();//error
}
}
/// 实例化类
var p= new Person();
main(){
///直接调用静态类
print(Person.nickName) // lisi
///静态方法可以访问静态属性
Person.showName();//lisi
}