13. Dart中的类 静态成员 操作符 类的继承
目录
静态成员
Dart 中的静态成员:
1、使用 static
关键字来实现类级别的变量和函数。
2、静态方法不能访问非静态成员,非静态方法可以访问静态成员。
class Person { static String name = 'mybj'; int age = 28; 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(); }
运行结果:
mybj mybj
Dart 对象操作符
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(); }
extends 继承
子类继承父类使用 extends
关键字,dart 没有多继承.
重写方法最好加上 @override
注解,便于协作.
子类构造方法中,如果要初始化父类构造方法,使用 super
关键字,比如 Dog(String name, int age, [String nickName]) : super(name, age);
子类中调用父类的方法使用 super.fun()
;
子类会继承父类里面可见的属性和方法 但是不会继承构造函数.
子类能复写父类的方法 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(); }
实例化自类给命名构造函数传参
代码实例:
class Person { String name; num age; Person(this.name,this.age); Person.xxx(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.xxx(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(); }
覆写父类的方法
代码示例:
class Animal { String name; int age; Animal(this.name, this.age); void speak() {} void printInfo() { print('My name is ${name}'); } void parentPrint() { print('I am parent'); } } class Dog extends Animal { String nickName; Dog(String name, int age, [String nickName]) : super(name, age); @override //可以写也可以不写 建议在覆写父类方法的时候加上 @override void speak() { this.parentPrint(); super.parentPrint();// 子类调用父类方法 print('wang wang!'); } void setNickName(String name) { if (name != null) { this.nickName = name; } } get fullInfo { return {"name": this.name, "age": this.age, "nickName": this.nickName}; } } void main() { print('---------继承------------'); Dog d = new Dog('qiu', 3, 'kitty'); d.printInfo(); d.speak(); d.setNickName('Nicjski'); print(d.fullInfo); }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 13. Dart中的类 静态成员 操作符 类的继承
码云笔记 » 13. Dart中的类 静态成员 操作符 类的继承