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); }
进击的小🐴农