zoukankan      html  css  js  c++  java
  • Dark 类与对象

    1 类的声明
    • 使用class声明一个类
    • 使用new 创建一个对象,new可省略
    • dark文件名和声明的类名可以不一样,与java不同
    void main() {
      var function = Person();
      var function1 = new Person();
       function.name;
    }
    
    class Person {
      String name;
    }
    2 属性与方法
    • 属性默认生成getter和setter,通过.访问
    • 方法不能重载
    3 类及成员可见性
    • dark中的可见性以library(库)为单位
    • 默认情况下,一个dark文件就是一个
    • 使用_ 表示库中类及成员的私有性,只能在当前库中访问类。也可以用_表示私有属性。
    • 使用import导入库

    4 定义一个类和私有属性

    void main() {
      Person person = Person();
    }
    
    class Person {
      String _weight;
    }
    在其他库中import库,访问不了私有属性 _weight
     
    5 计算属性 get关键字
    void main() {
      Person person = Person();
      person.salary = 3000;
      person.month = 12;
      print(person.yearSalary);
    }
    
    class Person {
      String weight;
      int salary;
      int month;
      //计算属性
      num get yearSalary => (salary * month);
    }
     
    6 构造方法
    • 存在默认的构造方法
    • 如果自定义构造方法,则默认构造方法无效
    • 语法糖形式定义构造方法,并给属性赋值
    • 构造方法不能重载
    命名构造方法
    可以定义多个构造方法,使用类名.方法的形式实现
    class Person {
      int salary;
      int month;
      Person(this.salary,this.month);//构造方法并赋值
      Person.withSalary(this.salary);//命名构造方法
      num get yearSalary => (salary * month);//计算属性
    }

    7 工厂构造方法

    class Fruit {
      final String name;
      static final Map<String, Fruit> _cache = <String, Fruit>{};
    
      //工厂构造方法,返回一个对象
      factory Fruit(String name) {
        if (_cache.containsKey(name)) {
          return _cache[name];
        } else {
          final fruit = Fruit._internal(name);
          _cache[name] = fruit;
          return fruit;
        }
      }
    
      Fruit._internal(this.name); //私有构造
    }

    8 静态成员

    • 使用static关键字实现类级别的变量和函数
    • 类中的常量需要使用static const声明

    9 对象操作符

    • 条件成员访问 ?.  如果对象或者属性为空,则不调用对象或者属性
    • 类型转换 as
    • 是否指定类型 is is! (类似java instance of )
    • 级联操作.. (类似java build模式 返回当前对象 )
    void main() {
      Person person = Person();
     
      if(person is Person){  
         person..age = 10
               ..salary = 100;
        person?.work();
      }
    }
    
    class Person {
      int age;
      int salary;  
      work() {
        print("work...");
      }
    }
  • 相关阅读:
    * 结束Activity
    进度条ProgressBar
    StackView实现叠加在一起的图片循环移动像循环队列一样
    AdapterViewFlipper功能 自动播放的图片库
    Spinner功能和用法
    SimpleAdapter 网络视图:带预览的图片浏览器
    AutoCompleteTextView
    Faster R-CNN
    Fast R-CNN
    100个大型机器学习数据集汇总(CV/NLP/音频方向)
  • 原文地址:https://www.cnblogs.com/suiyilaile/p/11001053.html
Copyright © 2011-2022 走看看