循环内多次创建对象,还是循环外创建对象多次调用?

循环内多次创建对象,还是循环外创建对象多次调用?

作业中的问题及修改建议如下:

【测试类】

1、

http://img1.sycdn.imooc.com//climg/5e7ca7e909c952ef04420104.jpg

为了体现多态,不能去直接创建实现类的对象,应该先声明一个接口的引用,如:IAct performer=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:performer= new Bear("Bill", 1);

最后act方法的调用写在switch结构的外面,即performer.act();

从上述的流程上看,通过接口的引用指向了子类的对象,最后去调用act()方法,因为performer引用指向的对象不同,调用act()方法就会输出不同的结果。这就是多态的体现。

修改后的代码如下:

 http://img1.sycdn.imooc.com//climg/5e7ca7fb09ea10ab00000000.jpghttp://img1.sycdn.imooc.com//climg/5e7ca7c009f46ac204610402.jpg

2、每个case语句后都有的代码,建议统一写到switch结构的下方。

修改后的代码如下:

http://img1.sycdn.imooc.com//climg/5e7ca84e0976461a03820137.jpg

我的想法是,在循环里会有多次创建对象的情况,这会消耗一部分时间。

所以在循环外先创建好对象,在循环内多次调用。

不知道这种考虑是否是有必要的?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小脸 2020-03-27 11:01:44

同学你好,因为需要通过case来匹配对应的动物的特征,最后每个case语句后都有的代码,统一写到switch结构的下方。。

按照同学的思路是如下这种吗?

http://img1.sycdn.imooc.com//climg/5e7d6c0609b86bfe07080309.jpg

http://img1.sycdn.imooc.com//climg/5e7d6c50092849f205970439.jpg

如果是,这样是不可行的。因为这样无论case输出多少,都无法正确匹配对应的动物特征

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 苍星乱舞 #1
    没有,我直接通过每个不同的对象调用。 例如case 1:bear.act(); case 2: lion.act(); 没有使用多态。 只是想问一下,使用多态在循环里会多次创建对象,这样会花费重复创建的时间,我不使用多态,只在循环外创建一次,这样思考有必要吗?
    2020-03-27 18:23:20
  • 好帮手慕小脸 回复 提问者 苍星乱舞 #2
    同学你好,并没有必要哦。 祝学习愉快~
    2020-03-27 18:38:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师