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

AI 概述
静态成员Dart 对象操作符extends 继承简单继承实例化自类给命名构造函数传参覆写父类的方法 静态成员 Dart 中的静态成员: 1、使用 static 关键字来实现类级别的变量和函数。 2、静态方法不能访问非静态成员,非静态方法可以访问静态成员。 class Person { static String name = 'mybj'; int age ...
目录
文章目录隐藏
  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);
}

以上关于13. Dart中的类 静态成员 操作符 类的继承的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

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

微信微信 支付宝支付宝

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

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 13. Dart中的类 静态成员 操作符 类的继承

发表回复