Dart语言基本特点(Object)

Dart和Java语言一样一切皆对象,每个对象都是一个类实例,所有的类都直接或者借接继承Object类。
Dart同样具有面向对象的语言的:封装、继承、多态的基本特点;
Dart语言和Java语言中共同点是都是单继承;

Dart中任何一个可以用变量引用的都是一个对象,在 Dart 中 甚至连 数字、函数和 null 都是对象。Dart中所有的对象都继承了Object 类。
所以学习Dart语言自然是从Object类开始。

一、Dart语言中的Object类,源码

class Object {

  const Object();

  external bool operator ==(other);

  external int get hashCode;

  external String toString();

  @pragma("vm:entry-point")
  external dynamic noSuchMethod(Invocation invocation);

  external Type get runtimeType;
}

二、Object 类中的各个函数认识

1.const Object()函数

Dartu 语言中一切皆对象,函数也是对象。每个对象都有自己的类型,函数的类型是Function

很显然就是在Object中已经定义了构造函数,而且是由const 修饰的表示构造函数不可重载;即在子类中能有一个构造函数。

  • Dart 语言中通过函数的可选参数[支持选择参数位置也可选择是否传参]、默认参数值等来实现/解决其他语言中的函数重载的需求
  • Dart语言中借助@required注解表示必传参数, @required需要引入包 package:meta/meta.dart,如果是用flutter,则可以引入包package:flutter/material.dart
  • Dart中同样main函数为入口,而且所有函数都有返回值,如果代码中没有返回值,dart语言会默认在最后添加隐士return null 语句

例:下图中重载构造函数时无论有参和无参构造先后顺序,IDEL【AndroidStudio】工具都会自动检测到错误;

图1 重载Object子类构造函数
图2 重载Object子类构造函数

Dart中 final const修饰 常量/固定值 的几个基本特点

  • 如果你以后不打算修改一个变量,使用 final 或者 const。

  • 一个 final 变量只能赋值一次,即定义final变量时就要赋值, 一旦赋值,就不能改变final变量的值;

  • const 变量同时也是 final 变量

  • const 变量是编译时常量【必须根据可在编译时计算的数据创建它们】, 即const可以修饰 一个四则运算算术表达式,也可以是Map、List等编译时可以确定值的对象;

  • const 修饰的数组、Map、List等变量数据被修饰的数据结构中的数据也默认递归被const修饰,即变量对象的结构和值不能被修改;

  • 其他关于final const 可参类型考Const, Static, Final
    注意: 实例变量可以为 final 但是不能是 const 。

2. external bool operator ==(other);函数

第一次看到这个函数和注释虽然很快知道这个函数和Java中的函数 public boolean equals(Object obj)函数一样都 是判断连个对象是否相同,区别是Java中已经默认实现函数是直接对比对象的指针【子类没有重写情况下】,而Dart是直接用external修饰把比较方法留给子类自己定义;

有趣的是在Dart中 == 函数调用时:

  TestObject test = TestObject();
    TestObject test1 = TestObject();
    print("${test  == test1}");

实际调用是调用test对象的==函数test1作为参数;这个也正是operator 关键字的作用;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值