dart函數的構造函數寫法


 

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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM