1. 一个类能够不定义构造函数json
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.定义命名(有名字)构造函数this
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);见以下所示:spa
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); }
2、具备继承结构的类code