1、类
Dart所有的东西都是对象,所有的对象都继承自Object类。
Dart 没有public private protected 修饰符,使用 _ 把一个属性或者方法定义为私有
class Person{
Srting name;
int age;
Person(String name,int age){ // 构造函数
this.age = age
this.age = age
}
void getInfo(){
print("${this.name}---${this.age}");
}
void setInfo(int age){
this.age = age
}
}
void main(){
Person p1 = new Person('aa',23);
print(p1.name);
p1.getInfo();
p1.setInfo(22);
}
2、静态成员
使用static关键字来实现类级别的变量和函数
静态方法不能访问非静态成员,非静态方法可以访问静态成员
访问静态方法和静态属性,直接类名调用 Person.静态成员
定义的类内访问静态成员不用this,直接访问,print(name) print(getInfo())
Dart 中的对象操作符:
? 条件运算符 as 类型转换 is 类型判断 .. 级联操作(连缀)
p..name="aa"
..age=10
..printInfo()
3、继承 extends
class Person {
String name;
num age;
Person(this.name,this.age) ;
printInfo(){
print("{$this.name}----{$this.age}")
}
}
class Web extends Person{
String sex;
Web(String name,num age,String sex):super(name,age){
this.sex = sex
}
run(){
print("${this.name}----{$this.age}----{$this.sex}")
}
}
main(){
Web w = new Web("aa",12)
w.run()
w.printInfo()
}
4、抽象类 abstract
抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。
抽象类不能被实例化,只有继承他的子类可以。
abstract class Animal{
eat() //抽象方法
printInfo(){
print("抽象类的普通方法")
}
}
class Dog extends Animal{
eat() { print("dog!")}
}
5、mixins--在类中混入其它功能
在Dart中可以使用mixins实现类似多继承的功能
使用条件:
(1)作为mixins的类只能继承自Object类
(2)作为mixins的类不能有构造函数
(3)一个类可以mixins多个mixins类
(4)mixins不是继承,也不是接口,是一种全新的特性
class A {
void printA(){print("A")}
}
class B {
void printB(){print("B")}
}
class C with A,B { // 类A,B不能有构造函数
void printA(){print("B")}
}
var c = new C()
c.printA()
c.printB()
6、泛型
泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持(类型校验)
T getData<T>(T value){
return value;
}
getData<String>("www")
getData<int>(12)
7、Dart中的库--import关键字引入
library指令创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定
有三种:
(1)自定义的库
(2)系统内置库
import 'dart:math';
import 'dart:io';
import 'dart:convert';
(3)pub包管理系统中的库
http://pub.dev/packages
async和await:
只有async方法才能使用await关键字调用方法
如果调用别的async方法必须使用await关键字
async是让方法变成异步,await是等待异步方法执行完成