类的定义
通过class来定义类,通过new来创建对象。
main() {
Person p = new Person();
Person p2 = Person(); //new并不是必须的
}
class Person{
}
类中成员的可见性
在Dart中每一个类都为一个library,Dart的可见性以library为主。在类名,方法名,函数名前加_
表示为该类的私有成员。
main() {
Person p = new Person(); //报错
}
class _Person{
}
计算属性
计算属性是通过其他属性计算得出的。
main() {
Person p = new Person();
print(p.c); //输出3
}
class Person {
int a = 1;
int b = 2;
int get c {
return a + b;
}
set c(int value) {
a = value - b;
}
}
构造方法
Dart的类在用户没有定义构造方法的时候,会有一个默认的构造方法,在用户定义完构造方法之后就不会有默认的构造方法,构造方法没办法用Java那样的方式去重载。
class Person {
String name;
int age;
Person(){
}
Person(this.name); //报错,"The default constructor is already defined."
Person.withName(this.name);
Person.withAge(this.age);
}
初始化列表
当一个类中存在final成员变量时,无法在构造函数中初始化,要在初始化列表中初始化,或者通过语法糖的形式。
class Person {
final int a;
//Person(this.a); 正确
/*Person(int a){
this.a = a; 错误
}*/
Person(int a):this.a = a{ //正确
}
}
对象操作符?.
?.
当对象为空时不调用,不为空时调用。
call
call可以让对象像方法一样可以被调用。
main() {
Person p = new Person();
p(); //输出call
}
class Person {
void call(){
print("call");
}
}