1. 静态成员、方法
1.1 static 声明
1.2 静态、非静态方法可访问静态成员、调用方法;静态方法不可访问静态成员、调用方法;
1.3 静态成员、方法,属于类的 ,不用实例化对象就可使用,不可使用super、this
class Person { static String name = '张三'; int age = 20; static void show() { print(name); } void printInfo() { /*非静态方法可以访问静态成员以及非静态成员*/ print(name); //访问静态属性 print(this.age); //访问非静态属性 show(); //调用静态方法 } static void printUserInfo() { //静态方法 print(name); //静态属性 show(); //静态方法 } } main() { print(Person.name); // 静态-不用实例化对象 Person.show(); Person p=new Person();静态-new对象 p.printInfo(); Person.printUserInfo(); }
2. 对象操作符
as 类型转换
is 类型判断
.. 级联操作 (连缀)
class Person { String name; num age; Person(this.name, this.age); void printInfo() { print("${this.name}---${this.age}"); } } main() { /****** is ******/ Person p=new Person('张三', 20); if(p is Person){ p.name="李四"; } p.printInfo(); /****** as ******/ var p1; p1=''; p1=new Person('张三1', 20); (p1 as Person).printInfo(); /****** ... ******/ Person p1 = new Person('张三1', 20); p1.printInfo(); p1 ..name = "李四" ..age = 30 ..printInfo();// 修改属性、调用方法 }
2. 继承
1. 简单继承:extends
class Person { String name='张三'; num age=20; void printInfo() { print("${this.name}---${this.age}"); } } class Web extends Person{}
2. super
: super(name, age) 默认值
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } // 最新版本的dart中需要初始化不可为null的实例字段,如果不初始化的话需要在属性前面加上late class Web extends Person{ late String sex; Web(String name, num age,String sex) : super(name, age){ this.sex=sex; } run(){ print("${this.name}---${this.age}--${this.sex}"); } }
3. 重写父类方法 @override
class Web extends Person{ Web(String name, num age) : super(name, age); run(){ print('run'); } @override work(){ print("${this.name}的工作是写代码"); } }
4. 子类调用父类的方法 super.xxx