静态成员
使用static 关键字来实现类级别的变量和函数
静态方法不能访问非静态成员
class Person{
static String name = '1';
static void show(){
print(11111);
}
}
对象操作符
? 条件运算符
as 类型转换
is 类型判断
.. 级联操作
class Person {
String name;
num age;
Person(this.name,this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
main(){
// Person p;
// p?.printInfo();
// Person p=new Person('张三', 20);
// p?.printInfo();
// Person p=new Person('张三', 20);
// if(p is Person){
// p.name="李四";
// }
// p.printInfo();
// print(p is Object);
}
类的继承
子类通过extends 关键字来继承父类
子类会继承父类里面共有方法 不会继承构造函数
子类不能重写父类的getter和setter
class s extends Person{
s(String name,num age ): super(name,age){
}
}
//类初始化后 super 的意思是把子类的构造函数传递给父类中
// 子类复写父类的方法 添加
@override
//自类调用父类方法
super.xxxx();
抽象类
主要用于定义标准,子类可以继承抽象类也可实现抽象类接口
1.抽象类通过abstract 关键字来定义
2.dart中抽象方法不能用abstract声明,dart中没有方法体的方法称为抽象类
3.子类继承抽象类必须实现抽象方法
4.如果抽象类当做接口实现的话必须实现抽象类定义所有属性和方法
5.抽象类不能被实例化只有子类继承
abstract class More{
eat();
run();
printInfp(){
print('抽象方法')
}
}
接口
如 golang 中interface{}
dart 中普通类或抽象类都可以作为接口被实现,使用 implements 关键字实现
dart 中接口如实现类是普通类,会将普通类和冲向中的属性的方法全部覆写一遍
抽象类可以定义抽象方法,一般使用抽象类定义接口
class demos implements more{
@override
....
}
- 一个类实现多个接口
abstract classA{
String name;
}
abstract classB{
String name;
}
class C implements A,B{
@override
printA(){
....
}
printB(){
....
}
}
- Mixins 多继承 关键字 with
1.mixins 类智能集成Object 不能继承其他类
2.mixins 没有构造函数
3.一个类可以mixins多个mixins类
4.不是接口不是继承
mixins 的实例是其超类的子类