美文网首页
Dart--04--类,静态成员,操作符,类的继承

Dart--04--类,静态成员,操作符,类的继承

作者: XieHenry | 来源:发表于2022-04-12 17:34 被阅读0次

    1.静态成员

    Dart中的静态成员:
    1、使用static 关键字来实现类级别的变量和函数
    2、静态方法不能访问非静态成员,非静态方法可以访问静态成员

    class Person {
      static String name = '张三';
      int age=20;
      
      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();
      }
    }
    //没有带static的时候,是先实例之后再调用。使用了static之后,直接用Person调用
    // print(Person.name);
    // Person.show(); 
    
    // Person p=new Person();
    // p.printInfo(); 
    
    Person.printUserInfo();
    

    2.对象操作符

    Dart中的对象操作符:
        ?     条件运算符 (了解)
        as    类型转换
        is    类型判断
        ..    级联操作 (连缀)  (记住)
    
    //公用代码:
    class Person {
      String name;
      num age;
      Person(this.name,this.age);
      void printInfo() {
        print("${this.name}---${this.age}");  
      }
    }
    
    //?条件运算符
    //如果main函数中直接调用以下方法,肯定是报错的。因为p没有赋值,为空。printInfo这个方法不存在。
    Person p;
    p.printInfo();
    
    //如果加上?,表示 如果为空的话,不会调用printInfo方法。也不会报错。
    Person p;
    p?.printInfo();
    
    
    //is 类型判断
    Person p = new Person('张三', 20);
    if (p is Person) {//判断p对象是否属于Person类型
       p.name = "李四";
    } //打印结果   李四---20
    
    //as 类型转换
    var p1;
    p1 = '';
    p1 = new Person('张三1', 20); //在以前的版本的时候,这样写会报错
    
    p1.printInfo();
    (p1 as Person).printInfo(); //p1强制转换成Person
    
    ..    级联操作 (连缀)
    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="张三222"
      ..age= 40
      ..printInfo();
    

    3.继承

    Dart中的类的继承:
    1、子类使用extends关键词来继承父类
    2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数
    3、子类能复写父类的方法 getter和setter

    class Person {
      String name;
      num age; 
      Person(this.name,this.age);
      void printInfo() {
        print("${this.name}---${this.age}");  
      }
    }
    
    class Web extends Person{
      Web(String name, num age) : super(name, age){//super表示把实例化子类的时候,传入的name age赋值给Person构造函数
      }
    }
    //在main函数中调用
    Web w=new Web('张三', 12);
    w.printInfo();
    
    class Person {
      String name;
      num age; 
      Person(this.name,this.age);
      void printInfo() {
        print("${this.name}---${this.age}");  
      }
      work(){
        print("${this.name}在工作...");
      }
    }
    
    
    class Web extends Person{
      Web(String name, num age) : super(name, age);
    
      run(){
        print('run');
        super.work();  //子类调用父类的方法
      }
      //覆写父类的方法
     @override       //可以写也可以不写  建议在覆写父类方法的时候加上 @override 
      void printInfo(){
         print("姓名:${this.name}---年龄:${this.age}"); 
      }
      @override
      work(){
        print("${this.name}的工作是写代码");
      }
    }
    
    //在main函数调用
    Web w=new Web('李四',20);
    w.printInfo();
    w.work();
    

    相关文章

      网友评论

          本文标题:Dart--04--类,静态成员,操作符,类的继承

          本文链接:https://www.haomeiwen.com/subject/cmyydktx.html