1. static:在方法前加了static修饰那他就是静态类,静态属性和静态方法我们可以通过类来访问不需要类实例再访问。静态方法不能访问非静态成员,非静态方法可以访问静态成员。
class person{ static string name = '张三'; int age = 20; static void show(){ print('static'); }| void pointInfo(){ //此时调用不要用this了,因为this表示当前类实例 print(name); show(); } }
2. as操作符
class person{ string name = '李四'; int age = 1; sayhi(){ print('hi'); } } var p1; p1 = ' '; p1 = new person('啊啊'); //as表示类型转换 (p1 as person).sayhi();
3. 级联操作“ .. ”
class person{ string name ; int age; person(this.name, this.age); void sayhi(){ print('hi'); } } person p1 = new person('aa', 1); p1.sayhi(); //p1.name = '张三aa'; //p1.age = 2; //p1.sayhi(); //以上三行代码可以简化成 p1..name = "李四" ..age = 30 ..sayhi();
4. is操作符
class person{ string name; age int; sayhi(){ print('aa'); } } person p = new person('zs', 20); //判断p这个对象是否属于person这个类型 if(p is person){ p.name = "name"; }
5. 继承
class person{ string name; int age; person(this.name,this.age); void sayhi(){ print('hi'); } } class stu extends person{ string sex; //定义继承类时stu会报错,因为person中的构造函数中有参数,stu中也应有构造函数给父类传参;super表示把实例化子类的时候,把赋值的参数传给父类 stu(string name, num age, string sex) : super(name, age){ //name, age都传给了父类,sex是把sex传的值传给定义时的string sex this.sex = sex }; } main(){ stu s1 = new person(); print(s1.name); }子类重写父类
子类重写父类
class person{ string name; int age; person(this.name,this.age); void sayhi(){ print('hi'); } } class stu extends person{ stu(string name, num age):super(name,age);
run(){
//子类调用父类方法和属性
super.sayhi();
this.name;
} //重写父类方法、建议用@override修饰 @override void sayhi(){} } main(){ stu s = new person('lisi',20); }