13. Dart中的类 静态成员 操作符 类的继承

目录
文章目录隐藏
  1. 静态成员
  2. Dart 对象操作符
  3. extends 继承

静态成员

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);
}

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 13. Dart中的类 静态成员 操作符 类的继承

发表回复