成员方法
与Java的成员方法无论在定义或是调用上没有区别。
惟一的区别是Dart的成员方法无法重载,但是有可选参数
的加持,也没有大问题
getter/setter
Dart的getter/setter与Kotlin的类似,但是没有backing filed
的概念,所有没有filed
变量用来存储数据,需要自己声明一个私有变量来充当所谓的backing field
class Rect {
final Point point;
final Size size;
num get area => size.width * size.height;
// 定义私有变量用来充当backing filed
Color _color;
Color get color => _color;
set color(Color newColor) {
_color = newColor;
notifyColorChanged();
}
}
抽象方法
与Java的抽象方法相似:
- 抽象方法没有方法体
- 抽象方法只能存在于抽象类中,但抽象类中可以非抽象方法(有方法体的方法)
- 抽象方法前不需加
abstract
关键字,这点与Java和Kotlin不同
abstract class Animal {
void hello(); //抽象方法
}
class Cat extends Animal {
void hello() {
print("meow");
}
}
可调用类(Callable classes)
类中只有一个call()
方法,所以可以通过类直接调用,有点像Java8的SAM(Single Abstract Method)
接口。
class WannabeFunction {
call(String a, String b, String c) => '$a $b $c!';
}
main() {
var wf = new WannabeFunction();
var out = wf("Hi","there,","gang");
}