void main() { var p = Person(); p.name = "Tom"; p.age = 22; p.work(); //name is Tom,age is 22,he is worker } class Person { String name; int age; //箭头函数以及插值表达式 work() => print("name is \$name,age is \$age,he is worker"); //报错不能重载 // work(String work){ // // } } 复制代码
void main() { var rect = Rect(); rect.width = 20; rect.height = 10; print(rect.area); //200 rect.area=300; print(rect.width);//15 } class Rect { num width, height; //计算属性 num get area { return width * height; } set area(value) { width = value / 20; } //面积方法 getArea() => width * height; } 复制代码
void main(){ var p = Person("yxjie", 28, "your heart"); var p2 =Person.withAddress("你的肺"); } class Person{; String name; int age; final String address;//只能经过语法糖方式赋值 // Person(String name,int age){ // this.name=name; // this.age=age; // } //与上面等价 Person(this.name,this.age,this.address); //定义多个构造方法 Person.withAddress(this.address); } 复制代码
void main(){ var p = Person("Jerry", 16); // p.name="hhah";//报错 } class Person{ final String name; final int age; const Person(this.name,this.age); } 复制代码
####工厂构造方法java
class AndroidUtil{ final String name; //工厂构造方法 特色返回一个对象实列 factory AndroidUtil(String name){ return AndroidUtil._innerConstruct(name); } AndroidUtil._innerConstruct(this.name); } 复制代码
//初始化列表方式赋值 Person.withMap(map) : address = map["address"] { this.name = map['name']; this.age = map["age"]; } 复制代码
####对象操做符bash
void main() { var person; person?.work(); //不会运行 var p; p = ""; p = Person(); (p as Person).work(); if(p is Person){ p.work(); } //级联操做 var p1 = Person(); p1 ..name = "jerry" ..age = 16; } class Person { work() => print("work ..."); } 复制代码
Dart中对象call方法相似于java中toString方法,区别在于Dart中call方法直接调用对象实列就行,java须要对象.toString()markdown