四十二、类别 和 协议(六)合成物件

本文介绍了如何通过合成物件的方式扩展物件类别,以Square物件为例,详细解释了如何使其包含Rectangle物件,并讨论了如何正确初始化和释放内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们  已经学到过  有  几种方法  可以扩展  一类物件,比如:创建  属于这类物件的一类新物件、创建  类别等。还有  另外一种方法  就是:创建  一类物件,使  每个这类物件  都包含  其他类型的物件。由于  每个这类物件  都包含  其他类型的物件,所以  这样的物件  被称为  合成物件。

回忆一下  Square这类物件。Square这类物件  代表  正方形。之所以  将  Square这类物件  包含  在Rectangle这一类型当中,是因为  正方形  刚好  是  四条边相等的矩形。由于  所有Square类型的物件  同时  属于  Rectangle类型,所以  所有适用于Rectangle这类物件的措施  都  适用于  Square这类物件。虽然  这样,但是  有些措施  对于  Square这类物件  却  不合适。比如  setWidth:andHeight这项措施  是  用来设定  矩形的宽  和  高的,这项措施  虽然  适用于  Square这类物件,但是  却  显得  有些  多余。

我们  可以  像  这样  重新  创建  Square这类物件:

 

于是  每个Square类型的物件  都  包含  一个Rectangle类型的物件rectangle。这时  适用于Rectangle这类物件的措施  就不能  直接  适用于  Square这类物件了。虽然  这样,我们  还是  可以利用  适用于Rectangle这类物件的措施,比如  我们  可以  这样  编写  area这项措施:

在这项措施中,对  rectangle这个物件  采取的area这项措施  就属于  适用于Rectangle这类物件的措施。

如果  你  像这样  创建  一个Square类型的物件:

那么  你  仅仅  为  mySquare这个物件  分配了  内存空间,而  对于  mySquare这个物件所包含的rectangle这个物件  却  没有分配  内存空间。解决办法  是  重新  编写  init这项措施  或者  添加  initWithSide:这项措施。同时  我们  还需要  重新  编写  dealloc这项措施,这样  在腾空mySquare这个物件所占内存空间的同时  也能腾空  rectangle这个物件所占用的内存空间。


内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、COSO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析模拟,揭示了生物质炉具在实际应用中的优点挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值