文档章节

Dart 中构造函数定义与使用详解

scooplol
 scooplol
发布于 2017/08/17 23:43
字数 444
阅读 630
收藏 0

一、普通类

   1. 一个类可以不定义构造函数

class Person{
    String firstName;
    String lastName;
}

在这种没有构造函数的情况下Dart会为其隐式定义一个默认构造函数(与类名相同、无参数)

Person(){  // 隐式无参构造函数,
}

2.定义有参构造函数

class Person{
     String firstName;
     String lastName;  
  
     Person(String firstName,String lastName){  // 有参构造函数,
        this.firstName = firstName;
        this.lastName  = lastName;
     }
}

3.定义命名(有名字)构造函数

import 'dart:convert';
class Person{
     String firstName;
     String lastName;  
  
     Person.fromJson(Map data){  // 命名构造函数,
          //Json格式的数据使用 'dart:convert'库,原生Json只支持转换为list数组或map对象,这里我们转换为map对象
          this.firstName = data["firstName"];  //将map中的数据赋值给firstName属性
     }
}

main() {

 String s= '{"firstName": "Job"}';  //json字符串
 Map map =  JSON.decode(s);  //解析字符串并返回map对象 

 var p = new Person.fromJson(map);  //使用命名构造函数
  print(p.firstName);
}

注:定义了命名构造函数,若不定义无参构造函数,则Dart不会自动定义默认构造函数,即:实例化时不能使用: new Person()(若需要这样实例化,必须手动提供); 只能使用 new Person.fromJson(map);见如下所示:

import 'dart:convert';
class Person{
     String firstName;
     String lastName;  
     Person(){}  // 手动提供无参构造函数
     Person.fromJson(Map data){  // 命名构造函数,
          //Json格式的数据使用 'dart:convert'库,原生Json只支持转换为list数组或map对象,这里我们转换为map对象
          this.firstName = data["firstName"];  //将map中的数据赋值给firstName属性
     }
}

main() {

 String s= '{"firstName": "Job"}';  //json字符串
 Map map =  JSON.decode(s);  //解析字符串并返回map对象 

 var p1 = new Person.fromJson(map);  //使用命名构造函数
 var p2 = new Person();   //使用无参构造
  print(p1.firstName);
}

二、具有继承结构的类

 

© 著作权归作者所有

scooplol
粉丝 17
博文 103
码字总数 205785
作品 0
南充
程序员
私信 提问
Dart的语法详解系列篇(二)-- 类与函数

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/44ae73a58ebc 转载请标明出处: https://www.jianshu.com/p/44ae73a58ebc 本文出自 AWeiLoveAndroid的博客...

AWeiLoveAndroid
2018/12/30
0
0
Flutter进阶篇(6)-- PageStorageKey、PageStorageBucket和PageStorage使用详解

如果你想从一个页面进入另一个页面,返回时还是保留着跳转前的最后的状态,也许你第一个想的是用Key去实现,但是那么有点麻烦,很多人的都不知道如何下手。今天我查找源码,发现了一个PageS...

AWeiLoveAndroid
07/10
0
0
Dart的语法详解系列篇(四)-- 泛型、异步、库等有关详解

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/a4a9c89b85ca 转载请标明出处: https://www.jianshu.com/p/a4a9c89b85ca 本文出自 AWeiLoveAndroid的博客...

AWeiLoveAndroid
2018/12/30
0
0
Dart 要想飞的高基础要打牢篇三(类、泛型、库)

介绍 Dart 要想飞的高基础要打牢篇一(变量与操作符) Dart 要想飞的高基础要打牢篇二(函数) 本片文章有点长,主要讲了 Dart 中 类、泛型和库 几个重要的概念。请耐心看下去。并没有给出过多的...

praise
07/31
0
0
flutter开发之——Dart中的函数

前言 Dart是一个真正的面向对象语言,方法也是对象并且具有一种类型。 这意味着,方法可以赋值给变量,也可以当做其他方法的参数。 也可以把Dart类的实例当做方法来调用。大家可以通过阅读l...

白瑞德
08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
37分钟前
3
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
56分钟前
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部