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);
}
原文链接: https://www.cnblogs.com/FdWzy/p/13358372.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/200740
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!