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);
}
1. 本站所有免费资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » 13. Dart中的类 静态成员 操作符 类的继承

发表评论

前端开发相关广告投放 更专业 更精准

立即查看 联系我们