隐式接口

每一个类都隐式地定义了一个接口并实现了该接口,这个接口包含所有这个类的实例成员以及这个类所实现的其它接口。如果想要创建一个 A 类支持调用 B 类的 API 且不想继承 B 类,则可以实现 B 类的接口。

扩展一个类

使用 extends 关键字来创建一个子类,并可使用 super 关键字引用一个父类:

重写类成员

子类可以重写父类的实例方法(包括 操作符)、 Getter 以及 Setter 方法。你可以使用 @override 注解来表示你重写了一个成员:

1
2
3
4
5
6
7
8
9
10
class Television {
// ···
set contrast(int value) {...}
}

class SmartTelevision extends Television {
@override
set contrast(num value) {...}
// ···
}

Read More

函数

Dart 是一种真正面向对象的语言,所以即便函数也是对象并且类型为 Function,这意味着函数可以被赋值给变量或者作为其它函数的参数。你也可以像调用函数一样调用 Dart 类的实例。

1
2
3
4
5
6
7
8
/// bool可以省略,但最好保留,提高可读性
bool isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}

//如果函数体内只包含一个表达式,你可以使用简写语法,称之为箭头函数
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

在Java中,要实现回调,需要实现一个接口,在Dart中,只需要传递一个回调函数即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void setListener(Function listener){
listener("Success");
}
//或者
void setListener(void listener(String result)){
listener("Success");
}

//第三种:类型定义 将返回值为voide,参数为一个String的方法定义为一个类型。
typedef void Listener(String result);
void setListener(Listener listener){
listener("Success");
}

Read More

基本语法

语言特性

  • 一切皆对象。
  • Dart没有 public、protected、private 等关键字,如果一个标识符以 _开头则表示私有。
  • 标识符以小写字母或下划线_开头,后面跟着字符和数字的任意组合。

Read More