zoukankan      html  css  js  c++  java
  • Dart语言--基础内容

    基础

    • 主函数

      void main ( ) { }

    • 声明变量

      • var a num a int a double a bool a = true
      • final b = 0; 声明只能赋值一次的变量
      • const a = 1; 常量
      • var a = const [1,2]; 声明一个不可变的list

    数据类型

    • 数据类型

      • Number
        • Int --整数型
        • double -- 浮点型
      • String
      • Boolean
      • List -- 数组
      • Map -- 键值对
    • 特殊运算符 ~/ 向下取整

    • 字符串操作

      • ''' hello dddd''' 表示多行字符串,保留换行

      • 'hello Dart' 会换行

      • String aa = r''hello Dart" 不会换行.会输出

      • 'abc' * 2 == 'abcabc'

      • 'abc'[1] == 'b'

      • 字符串插值 " a + b = ${a + b}" ${xx}是个表达式 只有一个变量插值可省略写成 $a

    • Map键值对

      • 创建 var qq = {'first' : 'Dart' , 'second' : 'java'};
      • 创建不可变Map var q = const { ,,,, }
      • 构造创建 var q = new Map()
      • 获取value qq['frist']
      • 循环传递两个值 qq.forEach ( f ); void f( key , value ){.......}
    • dynamic 类型 -- 动态类型

      • var a = 10; a = "xxx";
      • dynamic a = 20; a="xxx";
      • 泛型应用: var lis = new List<dynamic>(); 这样声明的lis 可以使用各种类型的数据

    运算符

    • ??= b ??= 10; b是空的则是10,有值则不做改变.
    • a~/=b 类似于 a+=b
    • var c = a ?? b a为空时表达式为b的值

    函数

    • void main () {} void位置是返回类型 void指的是不需要返回类型
    • Dart定义函数 xxx(){} js中定义函数 function xx () {}
    • void fun(String name , int age) {xxxx}
    • 可选参数写法
      • fun(String name , {int age, String kk}) fun('张三',age:20) 位置不固定
      • fun(String name , [int age , String kk]) fun('张三' , 20 ) 位置固定
    • 参数默认值
      • fun(String name , {int age = 30, String kk})
    • 匿名方法
      • () {} 可赋值给 变量 或者直接调用 .. 不能直接定义在最外层
      • ((){})() 自调.自执行

    面向对象

    class-类
    • class 声明类 new创建对象.new可省略 所有对象默认继承于Object类

    • class 属性默认有getter和setter方法--java需要自定义

    • class final声明的属性是只读的

    • class 方法不能重载

    • //举例
      class Person {
      	String name;
      	int age;
      	void work(){
      		print("name is $name , age is $age")
      	},
          Person (String name , int age){//构造方法
              this.name = name;
              this.age = age;
          };
          Person (this.name,this.age);//构造方法简写
          Person.ddd (){}; //带名称的构造方法
      }
      //调用
      var person = new Person();//new Person('Tom'.20)--有构造时
      person.name = 'Tom';
      person.age = 20;
      person.work();  //name is Tom , age is 20
      
    • 使用_表示私有性. 默认一个Dart文件就是一个库 .. Dart中可见性以Library(库)为单位 java的可见性设置十分多

    • class的计算属性

      • class Rect{
        	num width,height;
        	num get area => width * height;// area{ return w*h }
            set area(val) {//给计算属性area赋值时,处理数据,给其他属性赋值
                width = val / 20;
            };
        }
        var re = new Rect();
        re.height = 20;
        re.width = 10;
        print(re.area); //200
        
    • 构造方法-创建对象时调用的方法 可设置多个构造 .. 详情看上上面的person

      • 命名构造方法
      • 常量构造方法----如果类是不可变状态,可以吧对象对应为编译期常量
        • 使用const声明构造方法,并且所有变量都为final,使用const声明对象.可以省略
      • 工厂构造方法
        • 类似于设计模式中的工厂模式 - -构造方法前加factory
        • 最大的不同 , 工厂构造可以返回对象. ---???
      • 初始化列表 ---???
    • static 声明静态成员 --???
    • 对象操作符
      • ?.安全访问成员 person?.work() 对象存在时调用work不存在则不执行
      • as 类型转换
      • is is! 是否是指定类型
      • 级联操作 person..name='xx'..age=20..work();
    • 对象call方法
      • 如果class实现了call(),则该class的对象可以作为方法使用
    继承
    • extends --继承父类可见的属性和方法. 子类可以复写父类方法/getter/setter
    • 单继承/多态性
    • @override -- 指的是该方法是复写的
    • 子类构造方法会默认调用父类的无名无参的构造方法. 如果父类没有,则需要显示调用
    • 构造方法执行顺序: 子类初始化列表 - 父类构造 - 子类构造
    抽象类
    • 抽象类 abstract ,不能实例化.只能被继承实例化
    接口
    • 类和接口是统一的
  • 相关阅读:
    vs 调试的时候 使用IP地址,局域网的设备可以访问并调试
    jQuery Easing 使用方法及其图解
    win10使用Composer-Setup安装Composer以及使用Composer安装Yii2最新版
    PHP 字符串数组按照拼音排序的问题
    yii2 查询数据库语法
    css禁用鼠标点击事件
    内容显示在HTML页面底端的一些处理方式
    UltraISO制作U盘启动盘
    Swift中使用MPMoviePlayerController实现自定义视频播放器界面
    关于dismissViewControllerAnimated值得注意的一点(deinit)
  • 原文地址:https://www.cnblogs.com/Vayne-N/p/11519153.html
Copyright © 2011-2022 走看看