静态属性和静态方法
/* Dart中的静态成员: 1、使用static 关键字来实现类级别的变量和函数 2、静态方法不能访问非静态成员,非静态方法可以访问静态成员 */ // class Person { // static String name = '张三'; // static void show() { // print(name); // } // } // main(){ // print(Person.name); // Person.show(); // } 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(); //静态方法 //print(this.age); //静态方法没法访问非静态的属性 // this.printInfo(); //静态方法没法访问非静态的方法 // printInfo(); } } main(){ // print(Person.name); // Person.show(); // Person p=new Person(); // p.printInfo(); Person.printUserInfo(); }
对象操作符: ? as is ..
/* Dart中的对象操作符: ? 条件运算符 (了解) 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); var p1; p1=''; p1=new Person('张三1', 20); // p1.printInfo(); (p1 as Person).printInfo(); Person p1=new Person('张三1', 20); p1.printInfo(); p1.name='张三222'; p1.age=40; p1.printInfo(); Person p1=new Person('张三1', 20); p1.printInfo(); p1..name="李四" ..age=30 ..printInfo(); }
继承
/* 面向对象的三大特性:封装 、继承、多态 Dart中的类的继承: 1、子类使用extends关键词来继承父类 2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数 3、子类能复写父类的方法 getter和setter */ class Person { String name='张三'; num age=20; void printInfo() { print("${this.name}---${this.age}"); } } class Web extends Person{ } main(){ Web w=new Web(); print(w.name); w.printInfo(); }
super关键字
/* 面向对象的三大特性:封装 、继承、多态 Dart中的类的继承: 1、子类使用extends关键词来继承父类 2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数 3、子类能复写父类的方法 getter和setter */ class Person { String name; num age; Person(this.name,this.age); void 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(){ // Person p=new Person('李四',20); // p.printInfo(); // Person p1=new Person('张三',20); // p1.printInfo(); Web w=new Web('张三', 12,"男"); w.printInfo(); w.run(); }
覆写父类的方法
/* 面向对象的三大特性:封装 、继承、多态 Dart中的类的继承: 1、子类使用extends关键词来继承父类 2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数 3、子类能复写父类的方法 getter和setter */ class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } work(){ print("${this.name}在工作..."); } } class Web extends Person{ String sex; Web(String name, num age,String sex) : super(name, age){ this.sex=sex; } // //继承构造函数 // Web(String name, num age,String sex) : super.xxx(name, age){ // this.sex=sex; // } run(){ print("${this.name}---${this.age}--${this.sex}"); } } class Web extends Person{ Web(String name, num age) : super(name, age); run(){ print('run'); super.work(); //自类调用父类的方法 } //覆写父类的方法 @override //可以写也可以不写 建议在覆写父类方法的时候加上 @override void printInfo(){ print("姓名:${this.name}---年龄:${this.age}"); } } main(){ Web w=new Web('李四',20); // w.printInfo(); w.run(); }