• Dart学习记录(一)——对象


    1. 静态成员、方法

      1.1 static 声明

      1.2 静态、非静态方法可访问静态成员、调用方法;静态方法不可访问静态成员、调用方法;

      1.3 静态成员、方法,属于类的 ,不用实例化对象就可使用,不可使用super、this

    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(); //静态方法
      }
    }
    
    main() {
      print(Person.name); // 静态-不用实例化对象
      Person.show();
    
      Person p=new Person();静态-new对象
      p.printInfo();
    
      Person.printUserInfo();
    }

    2. 对象操作符

        as    类型转换
        is    类型判断
        ..    级联操作 (连缀)
    class Person {
      String name;
      num age;
      Person(this.name, this.age);
      void printInfo() {
        print("${this.name}---${this.age}");
      }
    }
    main() {
    
      /****** is ******/
      Person p=new Person('张三', 20);
      if(p is Person){
          p.name="李四";
      }
      p.printInfo();
    
    
      /****** as ******/
      var p1;
      p1='';
      p1=new Person('张三1', 20);
      (p1 as Person).printInfo();
    
      /****** ... ******/
      Person p1 = new Person('张三1', 20);
      p1.printInfo();
      p1
        ..name = "李四"
        ..age = 30
        ..printInfo();// 修改属性、调用方法
    }

    2. 继承

      1. 简单继承:extends

    class Person {
      String name='张三';
      num age=20; 
      void printInfo() {
        print("${this.name}---${this.age}");  
      } 
    }
    class Web extends Person{}

      2. super

      : super(name, age)  默认值
    class Person {
      String name;
      num age; 
      Person(this.name,this.age);
      void printInfo() {
        print("${this.name}---${this.age}");  
      }
    }
    // 最新版本的dart中需要初始化不可为null的实例字段,如果不初始化的话需要在属性前面加上late
    
    class Web extends Person{
      late String sex;
      Web(String name, num age,String sex) : super(name, age){
        this.sex=sex;
      }
      run(){
       print("${this.name}---${this.age}--${this.sex}");  
      }
      
    }

      3. 重写父类方法 @override

    class Web extends Person{
      Web(String name, num age) : super(name, age);
    
      run(){
        print('run');
      }
    
      @override
      work(){
        print("${this.name}的工作是写代码");
      }
    
    }

      4. 子类调用父类的方法 super.xxx

  • 相关阅读:
    [转]用异或交换两个整数的陷阱
    线索化二叉树
    [转]Socket编程中,阻塞与非阻塞的区别
    两个链表的归并
    [转] std::string and stl 算法
    类图
    leetcode 答案
    about raw socket
    54. Spiral Matrix【数组】
    矩阵乘法问题的实现
  • 原文地址:https://www.cnblogs.com/w-sansamilly/p/15012195.html
Copyright © 2020-2023  润新知