class p{ num x; num y; // p(num a,num b){ //構造函數寫法1 和c++一樣 // x=a; // y=b; // } // p(this.x,this.y); //構造函數寫法2
// p.from2num(num a,num b){ //構造函數3(命名構造函數) // x=a; // y=b; // } p(num a,num b):x=a,y=b{ //構造函數寫法4 (初始化列表) 這種方式和c++略有差別,c++是:x(a),y(b) 而dart是:x=a,y=b print('初始化列表'); } pPrint(){ print(x); print(y); } }
工廠構造函數:
工廠構造函數是一種構造函數,與普通構造函數不同,工廠函數不會自動生成實例,而是通過代碼來決定返回的實例對象.
工廠構造函數的關鍵字為factory,下面我們用工廠構造函數寫一個只能創造一個實例的類.
所以我怎么看都像個單例模式,為什么還單獨設置一個factory關鍵字。。
class A{ String name; static A cache; factory A([String name='A']){ //不能再定義默認構造函數了,好像dart里的構造函數:默認只要不是命名構造函數(類名.xxx()這樣的) if(A.cache==null){ //就算默認構造函數,像這個工廠構造函數也是算默認構造函數,爺吐了 A.cache=new A.newObject(name); } return A.cache; } A.newObject(this.name); //這個是命名構造函數 } void main(){ A a=new A('HelloWorld'); print(a.name); A b=new A('HelloDart'); print(b.name); print(a==b); }